2011-12-18 7 views
1

Ajaxを使用してXMLHttpRequestに送信する単一の値を送信(put)できます。しかし、 "配列"要素の値を送る方法は?"Array"値をXMLHttpRequest Object Ajax Requestに送る(入れる)方法?

例#1(OK!)この単純な値については

<input type="hidden" name="param" value="hello" /> 

我々は、単にのようなXMLHttpRequestオブジェクトに値を入れることができます。

xmlhttp.open("GET","ajax.php?param="+document.getElementById("param").value,true); 
xmlhttp.send(); 

法上は簡単で、 OK。
しかし、「配列」の値を送信(入れて)いかがですか?

例#2 *(配列値通報)

<input type="hidden" name="param[]" value="hello" /> 
<input type="hidden" name="param[]" value="world" /> 
... 
xmlhttp.open("GET","ajax.php?params="+document.getElementById("param").value,true); 


注:サーバー側はPHPとなります。

答えて

3

(名前のわずかな変更を除いて)違いはありません。それらは、HTML、JavaScript、HTTPに関する限り、name属性に[]の要素です。 PHPのみが、フォームコントロールの命名規則を熟知しています(サーバとクライアントの両方ではなく、サーバ上の単数または複数の値の期待値を扱う他のサーバ側言語すべて)

問題はあなたの初期のアプローチは動作しません(古いIEとIEのモードをquirksで除いて)。 getElementByIdIDで要素を取得し、要素の名前は、

要素IDを指定するか、getElementsByName('param[]')とループを使用してください。

URLに固着するためにデータにencodeURIComponentも使用する必要があります。

var inputs = document.getElementsByName('param[]'); 
var query = []; 
for (var i = 0; i < inputs.length; i++) { 
    var input = inputs[i]; 
    query.push(encodeURIComponent(input.name) + '=' + encodeURIComponent(input.value)); 
} 
var url = "ajax.php?" + query.join('&'); 
+0

私はあなたが与えるものを得ることができません。また、 'var input = inputs [1;'はどういう意味ですか?一括弧 '[1'? –

+0

それはタイプミスでした。 – Quentin

+0

あなたのスクリプトは 'for'ループ内にエラーがあるようです。 Coz私はループの後に '警告(" aaaa ");することさえできません。 –