题
我想发送一个用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;第二件事}