通过AJAX从大型表单发送数据

时间:2013-05-21 13:55:53

标签: javascript jquery ajax post smarty

我的表格有30个字段:3个字段,重复10次。这是我的代码:

<form id="artikelform" method="POST" name="controleartikelen" action="">
<table id="controle">
    <tr><th>Maakartikel</th><th>Aantal</th><th>Leverdatum</th></tr>
    {for $i=1 to 10}
        <tr>
            <td><input type="text" name="artikel" class="artinput"/></td>
            <td><input type="text" name="aantal" class="aantalinput"/>&nbsp;x</td>
            <td><input type="text" name="datum" class="dateinput"/></td>
        </tr>
    {/for}
</table>
<input type="button" onclick="javascript:startControle();" value="Controleer"/>
</form>

我想通过AJAX(POST方法)将我的表单值发送到PHP脚本。我尝试使用我的ajax发送$.param($("#artikelform").serializeArray());作为POST数据,但该函数的结果不可用(只有很多变量采用GET格式)。将此表单与AJAX结合使用的最佳方法是什么?也许是另一种使用serializeArray()的方式?

编辑:

这是我的AJAX请求代码:

$.ajax({
            url: 'myscript.php',
            cache: false,
            data: formdata,
            type: "POST"
        }).done(function(data){
            $("#resultwrapper").html(data);
        })

2 个答案:

答案 0 :(得分:3)

或者:

1)使用PHP函数json_decode()将JSON编码数据结构映射到PHP数组,或

2)不要序列化有效负载,而是将变量命名为php数组:

    <tr>
        <td><input type="text" name="artikel[]" class="artinput"/></td>
        <td><input type="text" name="aantal[]" class="aantalinput"/>&nbsp;x</td>
        <td><input type="text" name="datum[]" class="dateinput"/></td>
    </tr>

答案 1 :(得分:1)

我认为您应该尝试使用$('#artikelform').serialize()而不是$.param($("#artikelform").serializeArray());,然后您可以使用$_POST['fieldname']访问PHP脚本中的字段而不会出现问题