0

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

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

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

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

但是在运行脚本时出现此错误:

类型错误:$.serialize 不是函数

如何使用 AJAX 发送数组?

4

4 回答 4

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);    
?>
于 2013-05-04T09:57:18.567 回答
0

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

您也可以serialize()直接调用 jQuery 对象,而不是使用 jQuery 对象作为参数。像这样做:

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

希望有帮助。

于 2013-03-17T19:27:18.033 回答
0
var textBoxes;   
$('input[name="txtCoursesNamewith[]"]').each(function() {
textBoxes+=$(this).val()+"|||";
});

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

于 2013-03-17T19:04:47.823 回答
0

因为 $.serialize($('#txtCoursesNamewith').val()) 是字符串而不是 jQuery 对象,所以它没有序列化功能。

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

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

然后在 php

<?php
  print_r($_POST);
?>
于 2013-03-17T14:14:57.293 回答