将AJAX数据导入数组。 [JavaScript的]

时间:2016-10-23 23:50:26

标签: javascript ajax

我有一个简单的AJAX脚本来将文件加载到数组中。

var loadGame = function() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      game = this.responseText
    }
  };
  xhttp.open('GET', 'games/' + $('.meta').html() + '.game', true);
  xhttp.send();
}

但是,game被视为字符串,而不是数组,即使this.responseText是有效数组。当我将this.responseText存储到game时,如何让JS将其作为数组处理?

2 个答案:

答案 0 :(得分:1)

因为文件使用'来分隔字符串,JSON.parse不会工作

以下内容可能有所帮助,具体取决于数据

game = JSON.parse(this.responseText.split("'").map(function(x) { return x.replace(/"/gm, "'"); }).join('"'));

如果当时有任何值'或',那么这不会很好用,但

另一个更简单的解决方案是使用eval ...

eval("game=" + this.responseText);

使用eval时要小心

答案 1 :(得分:0)

xhttp.responseText始终是一个字符串。但是,您可以使用JSON.parse(xhttp.responseText)将其作为数组获取。在使用JSON.parse之前,您应该在服务器的json中对其进行编码。在php中,你可以做到的是json_encode函数。如下

    //php
  $response = array("a", "b", "c", "d");
  echo json_encode($response);

在客户端使用JSON.parse将返回[“a”,“b”,“c”,“d”];