jQuery表单序列化提交时的空POST数据

时间:2012-07-16 14:08:28

标签: jquery serialization post

我在PHP循环中填充多个表单,并将它们与<form id='X'>区分开来 它们在HTML中看起来像这样:

<form id='34' class='customer_contact' name='customercontact' method='post' action='customerUpdate.php'>
    Förnamn: <br /><input type='text' name='contact_firstname' class='textbox' value='text....'>
    Efternamn: <br /><input type='text' name='contact_lastname' class='textbox' value='text....'>
    Telefonnummer: <br /><input type='text' name='contact_phone' class='textbox' value='text....'>
    Mobiltelefon: <br /><input type='text' name='contact_cellphone' class='textbox' value='text....'>
    E-mail: <br /><input type='text' name='contact_email' class='textbox' value='text....'>
    <select name='isActive'>
        <option value="0" selected>Inaktiv</option>
        <option value="1">Aktiv</option>
    </select>
</form>

我尝试使用以下代码序列化它们:

<script type="text/javascript">
$(document).ready(function() {
$('#customer_contact_save').live('click', function(e){
    e.preventDefault();
    $.each($('form.customer_contact'), function(index) { 
        var sData = $(this).serialize();
        $.ajax({
            type: "POST",
            url: "updateCustomer.php",
            data: sData,
            success: function(someMessageFromPhp) {
                alert(someMessageFromPhp); 
            }
        });
    });
  });
});

(感谢Zagor23在SO上的代码)

但我的POST数据为空(我正在使用FireBug查看发送的内容)。

我尝试在脚本中添加console.log(sData);但FireBug返回:(an empty string)并且php var_dump($_POST);也为空..

任何人都知道出了什么问题?

3 个答案:

答案 0 :(得分:8)

事实证明,在我的实际代码中,我忘记将name添加到我的输入字段(facepalm)。

无论如何,谢谢!

答案 1 :(得分:1)

这样的事情怎么样?

$(".customer_contact").each(function()
{ 
    var form_id = $(this).attr("id");
    var sData = $("#" + form_id).serialize();
    $.ajax({
        type: "POST",
        url: "updateCustomer.php",
        data: sData,
        success: function(someMessageFromPhp) {
            alert(someMessageFromPhp); 
        }
    });
});

答案 2 :(得分:1)

这是我用你的代码制作的小提琴 - http://jsfiddle.net/7Y9vn/ 如果你打开萤火虫并按下按钮,你会看到两个请求都运行正常,所以你应该在页面上搜索其他代码错误