通过ajax将数组传递给php页面

时间:2013-03-17 14:09:39

标签: php ajax

我需要使用AJAX将数组传递给php页面。这个输入元素数组被发送到另一个页面:

<input type="text" name="txtCoursesNamewith[]" id="txtCoursesNamewith" size="117" >

这就是我准备发送的方式:

var txtCoursesNamewith = $.serialize($('#txtCoursesNamewith').val());

但是我在运行脚本时遇到了这个错误:

  

TypeError:$ .serialize不是函数

如何使用AJAX发送数组?

4 个答案:

答案 0 :(得分:1)

我遇到同样的问题,我只是使用这样的代码。 但首先请插入一个隐藏字段并设置文本框ID,如下所示:

<input type="hidden" name="txt_count" id="txt_count" value="3" />
<input type="text" name="txtCoursesNamewith[]" id="txtCoursesNamewith1" size="117" >
<input type="text" name="txtCoursesNamewith[]" id="txtCoursesNamewith2" size="117" >
<input type="text" name="txtCoursesNamewith[]" id="txtCoursesNamewith3" size="117" >

<script type="text/javascript">
var txt_count= $('#txt_count').val();
for (i=1; i<=txt_count; i++){
   queryString += "&txtCoursesNamewith%5B%5D=" + $('#txtCoursesNamewith'+i).val();
}
</script>

最后我们可以将queryString变量传递给ajax,你可以打印数组。

<?php
echo "<pre>";
print_r($_GET); // or print_r($_POST);    
?>

答案 1 :(得分:0)

因为$ .serialize($(&#39; #txtCoursesNamewith&#39;)。val())是一个字符串而不是jQuery对象,所以它没有序列化函数。

如果要序列化输入(及其值),请使用$(&#39; #txtCoursesNamewith&#39;)。serialize();

$.ajax({
type: 'POST', 
url: your url,
data: $('#'+form_id).serialize(), 
  success: function(data) {
    $('#debug').html(data);
  }
});

然后在php

<?php
  print_r($_POST);
?>

答案 2 :(得分:0)

var textBoxes;   
$('input[name="txtCoursesNamewith[]"]').each(function() {
textBoxes+=$(this).val()+"|||";
});

现在textBoxes将文本字段的所有值与 ||| 分开并传递给php脚本并使用explode()函数拆分每个输入值。它可以帮助你

答案 3 :(得分:0)

您不需要使用.val(),因为.serialize()适用于字段本身,而不适用于值。 (因为它需要从字段中获取名称和值)

您也可以直接在jQuery对象上调用serialize(),而不是将jquery对象用作参数。这样做:

var txtCoursesNamewith = $('#txtCoursesNamewith').serialize();

希望有所帮助。