【发布时间】:2016-03-31 20:04:21
【问题描述】:
我正在通过 Ajax 调用 PHP 函数:
var ajax = new XMLHttpRequest();
ajax.open("POST", "file.php", true);
ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajax.onreadystatechange = function(){
if(ajax.readyState == 4 && ajax.status == 200){
var returnVal = JSON.parse(ajax.responseText);
// do stuff here //
}
}
ajax.send('term=' + javaScriptArray);
一切都很好,它在发送单个值时很有效,但是当我尝试发布一个数组时就失败了。
在我的 PHP 函数中,我正在检查 POST 变量是否为数组:
is_array($_POST['term']);
但它总是返回false。
回显该值会打印如下内容:
value1,value2,value3
但作为单个字符串,而不是作为数组。
This SO thread 的答案不是作为数组发送,而是作为多个不同的变量发送,并使用 GET:
ajax.open("GET","myserver.com/myfunction.php?var1=1&var2=2&var3=3",true);
我发送的数据在项目数量上总是可变的,因此作为数组发送对我来说是最好的选择。 PHP 中的一个简单的is_array() 对于我正在做的事情要简单得多。
我看过设置多个变量:
for(var i = 0; i < argument.length; i++){
postString += 'arg' + i + '=' + argument[i] + '&';
}
ajax.send(postString);
但这仍然没有真正得到我想要的结果(再次使用多个变量)。
我也试过用相同的变量名发送它们:
ajax.send('arg=one&arg=two&arg=three');
但是每一个后续的都会覆盖它的前一个。
我对使用 JQuery 的解决方案不感兴趣。我不需要整个库,这是我唯一需要的。
编辑 1
我也想保留为POST。
【问题讨论】:
-
JSON.stringify 无需 jquery 即可工作
标签: javascript php jquery arrays ajax