微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我通过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

但作为单个字符串,而不是数组.

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.

解决方法:

要将参数视为数组,必须使用[]表示法

var postArray = new Array();
for(var i = 0; i < argument.length; i++){
    postArray[i] = 'arg[]=' + encodeURIComponent(argument[i]);
}
ajax.send(postArray.join('&'));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐