Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax和JavaScript,如何在不使用JQuery的情况下发布数组*?_Javascript_Php_Jquery_Arrays_Ajax - Fatal编程技术网

Ajax和JavaScript,如何在不使用JQuery的情况下发布数组*?

Ajax和JavaScript,如何在不使用JQuery的情况下发布数组*?,javascript,php,jquery,arrays,ajax,Javascript,Php,Jquery,Arrays,Ajax,我正在通过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.s

我正在通过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
但是作为单个字符串,而不是数组

具有一个答案,该答案不作为数组发送,而是作为多个不同的变量发送,并使用GET:

ajax.open("GET","myserver.com/myfunction.php?var1=1&var2=2&var3=3",true);
我发送的数据在项目数量上总是可变的,因此以数组形式发送是我的最佳选择。PHP中的一个简单的
是_array()
,对于我正在做的事情来说要简单得多

我已经研究了设置多个变量:

for(var i = 0; i < argument.length; i++){
    postString += 'arg' + i + '=' + argument[i] + '&';
}
ajax.send(postString);
但每一个连续的变化都会覆盖它的前身

我对使用JQuery的解决方案不感兴趣。我不需要整个库,这是我唯一需要的

编辑1


我还希望将其保留为
POST

,以便将参数视为数组,它必须使用
[]
符号

var postArray = new Array();
for(var i = 0; i < argument.length; i++){
    postArray[i] = 'arg[]=' + encodeURIComponent(argument[i]);
}
ajax.send(postArray.join('&'));
var postArray=new Array();
for(var i=0;i
您需要让PHP清楚,这是您正在发送的数组。通常可以通过添加
[]
来实现这一点,就像在PHP中一样。因此,在您的示例中,尝试以下方法:

ajax.send('arg[]=one&arg[]=two&arg[]=three');

stringify可以在没有jqueryThat的情况下工作。我不知道发布数组的
[]
语法,非常感谢!如果可以的话,对于
.join()
,我会再次使用+1-我以前从未见过这种情况。是的,我注意到在PHP中,它现在将始终接收一个数组,即使只是一个值。谢谢
ajax.send('arg[]=one&arg[]=two&arg[]=three');