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

有帮助吗?

解决方案

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

您可能需要查看在PHP中创建JSON数据

其他提示

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

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

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

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

是吗?

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

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

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

您可以像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 = <!> gt; {[0] = <!> gt;'first thing',[1] = <!> gt;第二件事}

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top