我想发送一个用javascript构造的数组,其中包含多选的选定值。有没有办法使用ajax将此数组发送到php脚本?
答案 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] =>第二件事}