我有一个简单的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将其作为数组处理?
答案 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”];