从JavaScript发送二维数组到PHP,反之亦然

时间:2012-12-05 23:08:49

标签: php javascript json

我使用此代码发送一维整数数组,但是如何使其发送和接收由整数和字符串组合形成的二维数组,例如[这里的数字] [“这里的文字”]但是网址有一个限制,所以我不能成为一个大数组

//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]); } 

        }}

2 个答案:

答案 0 :(得分: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); 

然后在服务器上,您可以使用$_POST["n"]检索数组元素的数量,然后为每个$_POST["arr_" + t]处理从{0到t的{​​{1}}。

答案 1 :(得分: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