簡體   English   中英

Ajax和JavaScript,如何在不使用JQuery的情況下POST數組*?

[英]Ajax and JavaScript, how to POST array *without* using JQuery?

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

要將參數視為數組,必須使用[]表示法

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

您將需要清除PHP,它是您要發送的數組。 您通常可以通過添加[]來完成此操作,就像在PHP中一樣。 所以在你的例子中,試試這個:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM