我使用此代码发送一维整数数组,但是如何使其发送和接收由整数和字符串组合形成的二维数组,例如[这里的数字] [“这里的文字”]但是网址有一个限制,所以我不能成为一个大数组
//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]); }
}}
答案 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