【问题标题】:Automate AJAXed forms with Jquery使用 Jquery 自动化 AJAX 表单
【发布时间】:2013-05-21 09:48:50
【问题描述】:

我想改进我的网站,并想出一个好方法是通过 AJAX 提交表单。但是,我有这么多的表格,做 $('#formx').submit() 是不切实际的。我想知道是否有办法通过制作通用标记来自动执行此操作;

<form class="ajax_form" meta-submit="ajax/pagename.php">
 <input type="text" name="inputx" value="x_value">
 <input type="text" name="inputy" value="y_value">
</form>

然后将此提交到 ajax/pagename.php,它会自动包含 inputx 和 inputy? 这不仅可以节省我很多时间,而且可以节省很多代码行。

第一个问题,所以我希望它不是一个愚蠢的问题:)

【问题讨论】:

    标签: ajax forms input children


    【解决方案1】:

    这样的东西应该适用于所有形式。 它使用 jQuery - 这在您的项目中可用吗?这个特定的代码块没有经过测试,但我一直使用这种方法。它一个美妙的节省时间。请注意,我将meta-submit 更改为data-submit,以便可以使用$('.elemenet_class').data('submit'); 获取其值

    HTML

    <!-- NOTE: All Form items must have a unique 'name' attribute -->
    <form action="javascript:void(0);" class="ajax_form" data-submit="ajax/pagename.php">
        <input type="text" name="inputx" value="x_value">
        <input type="text" name="inputy" value="y_value">
    
        <input type="submit" value="go" />
    </form>
    

    JavaScript

    $('.ajax_form').submit(function(e){
        var path = $(this).attr('data-submit'); //Path to Action
        var data = $(this).serialize();    //Form Data
        $.post(path, {data:data}, function(obj){
    
        });
        return false;
    })
    

    PHP

    //DEBUGGING CODE
    //var_dump($_POST);
    //die(null);
    
    $data = $_POST['data'];
    $inputx = $data['inputx'];
    $inputy = $data['inputy'];
    

    【讨论】:

    • 感谢您的回答,表单按应有的方式提交,但是当我设置一个回显 $_POST['inputx'] 的测试页面时,它给了我一个错误,它说它没有定义。 `
    • 你需要先$data = $_POST['data'] 然后$x=$data['inputx']; 而不是回显任何东西,让你的PHP页面只有var_dump($_POST);,你会看到传递的结构。请参阅包含 PHP 的更新答案。
    • 另外,您应该将action="javascript:void(0);" 添加到您的表单中。所有表单都应该有一个action 参数,即使它什么都不做。
    • 我的 js 代码 = prntscr.com/15xjou 我的 html 代码 = prntscr.com/15xjr8 我的 php 代码 = prntscr.com/15xjsa 我的结果 = prntscr.com/15xjta :'( 是的,已经看到并修复了它。{data :data} 也应该只是数据
    • 如果您将 {data:data} 更改为 data,那么我相信您的 php 应该只是 $_POST['inputx']; - 我不在我的电脑上,这就是为什么我没有给你测试代码 - 如果您仍然遇到问题,我可以在一个多小时内提供。这本质上是一样的:stackoverflow.com/questions/10398783/…
    【解决方案2】:

    您可以创建 ajax fot 文本框,以便在更改焦点时更新到数据库。

    <form id="ajax_form1">
    <fieldset> 
        <input type="text" id="inputx" value="x_value" />
        <input type="text" id="inputy" value="y_value" /> 
    </fieldset>
    </form>
    
    <script>
    
    $(document).ready(function()
    {
    $("form#ajax_form1").find(":input").change(function()
     {
       var field_name=$(this).attr("id");
       var field_val=$(this).val();
       var params ={ param1:field_name, param2:field_val };
    
       $.ajax({ url: "ajax/pagename.php",
                dataType: "json",
                data: params,           
                success: setResult      
             });
    });
    });
    </script>
    

    【讨论】:

    • 这看起来有点乱,因为不是所有的表单都会有 2 个输入,而且 $.post 本质上和 $.ajax 是一样的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 2010-12-21
    • 2015-06-19
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多