Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.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 为什么我的php认为数组是字符串?_Javascript_Php - Fatal编程技术网

Javascript 为什么我的php认为数组是字符串?

Javascript 为什么我的php认为数组是字符串?,javascript,php,Javascript,Php,我有这个前端javascript代码,它通过数组收集信息并发送到后端。出于某种原因,我的php代码认为这个数组实际上是一个字符串。 以下是我的javascript代码: function gamesearch() { var text_search = document.getElementById("search-space").value; var creator_search = document.getElementById("search

我有这个前端javascript代码,它通过数组收集信息并发送到后端。出于某种原因,我的php代码认为这个数组实际上是一个字符串。 以下是我的javascript代码:

function gamesearch() {

    var text_search = document.getElementById("search-space").value;
    var creator_search = document.getElementById("search-space-creator").value;
    var tags = document.getElementsByClassName("selectedtag");

    var tagarray = ['banana', 'fruit'];

    console.log(tagarray);
    var fd = new FormData();
    fd.append("text_search", text_search);
    fd.append("creator_search", creator_search);
    fd.append("tagarray", tagarray);
    fd.append("gamesearch", true);
    var xhr = new XMLHttpRequest();
    var fullurl = '../backend/gamesearch.php';
    xhr.open('POST', fullurl, true);
    xhr.onload = function() {
        if (this.status == 200) {

            console.log(this.responseText);

        };
    };
        xhr.send(fd);

}
这是我的后端php代码

if (isset($_POST['gamesearch'])) {
  $text_search = $_POST['text_search'];
  $creator_search = $_POST['creator_search'];
  $tagarray = $_POST['tagarray'];

echo gettype($tagarray);

}
控制台上写着:字符串。
请帮忙!谢谢

在将JSON数组发送到后端之前,尝试将其字符串化

fd.append("tagarray", JSON.stringify(tagarray));
然后在后端重新解码

$tagarray = json_decode($_POST['tagarray']);

在将JSON数组发送到后端之前,请尝试对其进行字符串化

fd.append("tagarray", JSON.stringify(tagarray));
然后在后端重新解码

$tagarray = json_decode($_POST['tagarray']);

您是否尝试过转储$_POST['tagarray']以查看您收到它的确切形式?PHP不会说JavaScript,反之亦然。因此,您必须将JavaScript编码为双方都可以解释的格式,如JSON。您是否尝试过转储$_POST['tagarray']以查看接收到它的确切形式?PHP不讲JavaScript,反之亦然。因此,您必须将JavaScript编码为双方都可以解释的格式,如JSON。