【问题标题】:Why I can't post array and single value in the same form by ajax?为什么我不能通过 ajax 以相同的形式发布数组和单个值?
【发布时间】:2014-11-25 11:06:16
【问题描述】:

我有这个脚本:

<script>
function send_mail() {
$.ajax({
type: "POST",
url: "/software/hsn/send_mail.php",
data:  $('[name="check_id[]"]').serialize(), // post array
{email : $("#email").val()} // post single value

success: function() {

// content
}
}
</script>

当我发布表单时,只发布了一个控件。示例:

$('[name="check_id[]"]').serialize(), // post array

{email : $("#email").val()} // post single value

通常情况下,最后一个控件会生效,即使我改变了它们的位置。

谢谢大家!

【问题讨论】:

    标签: php jquery ajax forms post


    【解决方案1】:

    您的数据语法错误。 数据可以是 PlainObject 或 String 或 Array,但不能是多个逗号分隔的值。 数据的正确语法是

    data: {name1: value1, name2: value2},
    

    所以你的语法应该是

    {name : $('[name="check_id[]"]').serialize(),email : $("#email").val()},
    

    查看 jQuery ajax 文档here

    【讨论】:

      【解决方案2】:

      更改数据:

       $('[name="check_id[]"]').serialize(), // post array
      {email : $("#email").val()}
      

      data: {check_id: $('[name="check_id[]"]').serialize(),email : $("#email").val()}
      

      它将采用所有值。 试试看。

      【讨论】:

        【解决方案3】:

        您可以使用serializeArray

        data: $('[name="check_id[]"]')
              .add('#email') // add the element to the collection
              .serializeArray() // serialize now
        

        【讨论】:

          【解决方案4】:

          谢谢大家,特别是吐温先生。我的问题已经解决了。

          我使用这个脚本:

          data:  $('[name="check_id[]"]').serialize() + "&email=" + $("#email").val(),
          

          成功了。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-08-21
            • 1970-01-01
            • 2020-04-07
            • 1970-01-01
            • 1970-01-01
            • 2010-10-10
            • 2011-11-19
            • 1970-01-01
            相关资源
            最近更新 更多