是否可以通过JavaScript将数组提交到AJAX?
我有: 在TestArray.php中是否可以通过JavaScript将数组提交到AJAX?,javascript,php,arrays,ajax,Javascript,Php,Arrays,Ajax,我有: 在TestArray.php中 ... <script> function test(){ var pageName="TestArray.php"; var text="numbers"; var array=['one','two']; var xmlhttp=new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.rea
...
<script>
function test(){
var pageName="TestArray.php";
var text="numbers";
var array=['one','two'];
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
alert(xmlhttp.responseText);
}
};
xmlhttp.open("GET", pageName+"?text="+text+"&array[]=["+array+"]");
xmlhttp.send();
}
test();
</script>
...
它应该提醒“数字=数字&一和二”。
如何让foreach$_GET[array]{…}通过决定在text=+text+之后写什么来工作?您应该更改此选项
<?php
$response="";
$numbers="";
if(isset($_GET["text"])){
$numbers=$_GET["text"];
$response="numbers=".$numbers."&";
}
if(!empty($_GET["array"])){
foreach($_GET["array"] as $checkedItem){
$response.=$checkedItem."&";
}
$response=substr($response,0,strlen($response)-1);
}
echo $response;
?>
为此:
xmlhttp.open("GET", pageName+"?text="+text+"&array[]=["+array+"]");
正如前面的回答所述,您需要将数组参数化为url字符串 如果必须重复创建url字符串,可以使用函数将对象转换为url参数字符串 常量es6parameterize=obj=> Object.keysobj.mapk=> Array.isArrayobj[k] ? obj[k].mapx=>`${k}[]=${x}`.加入'&' :`${k}=${obj[k]}` .加入“&” 函数es5parameterizeobj{ var ret=[] 对于obj中的var k{ 如果obj[k]。构造函数===数组{ [].push.applyret,obj[k].mapfunctionx{return k+'[]='+x} } 否则{ ret.pushk+'='+obj[k] } } 返回ret.join'&' } console.log 页码?+ES6参数化{text:'foo',数组:['bar',baz']} console.log 页码?+es5parameterize{text:'foo',数组:['bar',baz']}
可以将数组传递到查询字符串中,但不能像这样。我需要像?array[]=this&array[]=is&array[]=testeen那样返回500个内部服务器错误。这通常意味着PHP脚本中存在语法错误。有关详细信息,请查看服务器错误日志。
xmlhttp.open("GET", pageName+"?text="+text+"&array[]="+array[0]+"&array[]="+array [1]);