0

私はこのコードを使用して整数の1次元配列を送信しますが、整数と文字列の組み合わせで形成された2次元配列を送受信する方法、たとえば[number here] ["text here"]ですが、URLには制限があるため、大きな配列を作成しないでください

//Send data to php
                var queryString ="?";
                            for(var t=0;t<alldays.length;t++)
                                {   
                                    if(t==alldays.length-1)
                                    queryString+="arr[]="+alldays[t];
                                    else
                                    queryString+="arr[]="+alldays[t]+"&";
                                }
                ajaxRequest.open("POST", "forbidden.php" + queryString, true);
                ajaxRequest.send(null); 

            }

// Create a function that will receive data sent from the server(sended as echo json_encode($array))
    ajaxRequest.onreadystatechange = function(){
        if(ajaxRequest.readyState == 4){

        var myArray = ajaxRequest.responseText.replace("[","").replace("]","").replace(/"/g,"").split(",");
        for(var i=0; i<myArray.length; i++) { alldays[i] = parseInt(myArray[i]); } 

        }}
4

2 に答える 2

1

URL に追加されたクエリ文字列としてリクエストを含める代わりに、POST の本文として送信します。

var queryString ="";
for(var t=0;t<alldays.length;t++)
{
    if(t==alldays.length-1)
        queryString+="arr[]="+alldays[t];
    else
        queryString+="arr[]="+alldays[t]+"&";
}
ajaxRequest.open("POST", "forbidden.php", true);
ajaxRequest.send(queryString); 

POST 本文として送信される場合、クエリの長​​さには同じ制限はありません。

ただし、すべての POST 変数に名前が付けられ"arr[]"ているため、問題が発生します。代わりに、次のエンコード方式をお勧めします。

var queryString = "n=" + alldays.length;
for (var t=0; t<alldays.length; t++)
{
    queryString += "&arr_" + t + "=" + alldays[t];
}
ajaxRequest.open("POST", "forbidden.php", true);
ajaxRequest.send(queryString); 

次に、サーバーで配列要素の数を取得し、0 から までそれぞれを$_POST["n"]処理できます。$_POST["arr_" + t]tn-1

于 2012-12-05T23:18:00.107 に答える
0

リクエストを使用するので、クエリ文字列のパラメーターでPOST配列を送信しないでください。GET

var queryString =""; // no question mark
// construct rest of query string here
ajaxRequest.open("POST", "forbidden.php", true);
ajaxRequest.send(queryString);

また、応答には JSON を使用します。PHP 側: json_encode、JavaScript 側:JSON.parse

于 2012-12-05T23:19:00.010 に答える