我需要使用AJAX将数组传递给php页面。这个输入元素数组被发送到另一个页面:
<input type="text" name="txtCoursesNamewith[]" id="txtCoursesNamewith" size="117" >
这就是我准备发送的方式:
var txtCoursesNamewith = $.serialize($('#txtCoursesNamewith').val());
但是我在运行脚本时遇到了这个错误:
TypeError:$ .serialize不是函数
如何使用AJAX发送数组?
答案 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();
希望有所帮助。