我通过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);
一切正常,当发送单个值时,它可以正常工作,但是在我尝试POST一个数组时则会出问题。在我的PHP函数中,我正在检查POST变量是否为数组:
is_array($_POST['term']);
但它总是返回 false。
打印该值会输出以下内容:
value1,value2,value3
但是作为一个字符串发送,而不是作为数组。
这篇SO帖子有一个答案,它不作为数组发送,而是作为多个不同的变量,并使用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
。