[英]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.