25

我想发送一个用 javascript 构造的数组,其中包含多项选择的选定值。有没有办法使用 ajax 将此数组发送到 php 脚本?

4

6 回答 6

26

您可以使用 jQuery 的 $.post 方法来做到这一点(例如):

var myJavascriptArray = new Array('jj', 'kk', 'oo');

$.post('urltocallinajax', {'myphpvariable[]': myJavascriptArray }, function(data){
   // do something with received data!
});

PHP 将收到一个名为myphpvariable的数组,它将包含 myJavascriptArray 值。

是那个吗 ?

于 2010-10-22T10:23:14.230 回答
18

您可以使用 XML 或 JSON 回发到您的服务器。您的 javascript 必须构建帖子,在 XML 的情况下需要您在 javascript 中创建它。JSON 不仅轻量级,而且更容易用 javascript 制作。查看JSON-PHP以解析 JSON。

您可能想看看在 PHP 中创建 JSON 数据

于 2008-11-18T18:15:29.843 回答
3

IIRC,如果 PHP 看到一个看起来像 的查询字符串http://blah.com/test.php?var[]=foo&var[]=bar&var[]=baz,它会自动创建一个名为的数组$var,其中包含 foo、bar 和 baz。我认为您甚至可以在查询字符串的方括号中指定数组索引,它会将值粘贴在该索引中。您可能需要对括号进行 URL 编码...使用此功能的通常方式是创建一个名为“var[]”的 HTML 输入字段,因此只需执行浏览器通常在那里执行的任何操作。PHP 文档中有一个关于通过请求的数组变量的部分。

于 2008-11-18T18:54:19.190 回答
1

您可能正在寻找一种对数据进行序列化(jQuery 版本)的方法。

于 2008-11-18T18:20:30.257 回答
1

jQuery 1.4更新为使用 PHP 语法发送数组。您可以使用以下方法将其切换为旧样式:

这是语法:

jQuery.ajaxSetting.traditional = true;

这是示例

$.ajax({    
 traditional: true,
 type: "post",
 url: myURL,
 dataType: "text", 
 data: dataToSend, //this will be an array eg. 
 success: function(request) {
  $('#results').html(request);
 }  // End success
 }); // End ajax method
于 2012-05-02T11:02:53.967 回答
0

您可以按照 Meador 的建议创建一个数组并发送它:(以下代码是 Mootooled,但在其他库/普通旧 JS 中类似)

myArray.each(function(item, index)  myObject.set('arrayItems['+index+']', item);
myAjax.send(myObject.toQueryString());

这将向 php 发送一个名为 arrayItems 的数组,可以通过 $_POST['arrayItems'] 访问该数组

echo $_POST['arrayItems'] ; 

会回显类似:array=>{[0]=>'first thing', [1]=> second thing}

于 2009-01-08T12:19:48.980 回答