【问题标题】:jQuery form serialize empty POST data on submitjQuery表单在提交时序列化空POST数据
【发布时间】:2012-07-16 14:08:28
【问题描述】:

我在 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); 也是空的..

有人知道出了什么问题吗?

【问题讨论】:

  • 只有一个空的ajax调用还是调用的数量等于表单的数量?
  • @shershen 调用次数等于表单数

标签: jquery serialization post


【解决方案1】:

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

还是谢谢!

【讨论】:

  • 我正要发布它,但看到了你的帖子。所以我投票赞成这个。
  • 太笨了!我犯了同样的错误,因为我忘记了我的基础知识:) 你拯救了我的一天:)
【解决方案2】:

这是我用你的代码制作的小提琴 - http://jsfiddle.net/7Y9vn/ 如果您打开 firebug 并按下按钮,您将看到两个请求都运行正常,因此您可能应该在页面的其他代码中搜索错误

【讨论】:

    【解决方案3】:

    这样的事情怎么样?

    $(".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); 
            }
        });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-13
      • 1970-01-01
      • 2014-07-03
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      • 1970-01-01
      • 2014-06-24
      相关资源
      最近更新 更多