如何通过ajax将数组发送到php?

时间:2008-11-18 18:09:27

标签: php ajax multiple-select

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

6 个答案:

答案 0 :(得分:26)

您可以使用jQuery的$ .post方法(例如):

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

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

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

是吗?

答案 1 :(得分:18)

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

您可能需要查看Creating JSON Data in PHP

答案 2 :(得分:3)

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

答案 3 :(得分:1)

您可能正在寻找Serialize(jQuery版)数据的方法。

答案 4 :(得分:1)

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

这是synatax:

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

答案 5 :(得分: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] =>第二件事}