Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以通过JavaScript将数组提交到AJAX?_Javascript_Php_Arrays_Ajax - Fatal编程技术网

是否可以通过JavaScript将数组提交到AJAX?

是否可以通过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

我有:

在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.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]);