我可以将JavaScript JSON.parse与外部数组一起使用吗?

时间:2015-09-04 15:32:55

标签: javascript php arrays json

我需要从外部文件中获取数据;我试图发出ajax请求,但我似乎只把所有数据都作为一个字符串。我在使用JSON.parse时遇到了麻烦;我得到'Uncaught SyntaxError:Unexpected token'xmlhttp.onreadystatechange'。我知道这可能是因为我没有收到JSON数据。这就是我到目前为止所做的:

function loadXMLDoc() {
    var xmlhttp;
    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    } else {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            var data = xmlhttp.responseText;
            var jn = JSON.parse(data);
            document.getElementById("output").innerHTML = jn;
        }
    }
    xmlhttp.open("GET", "Users.php", true);
    xmlhttp.send();
}
window.onload = loadXMLDoc;

这是我从“Users.php”作为字符串获得的,但不是作为数组:

[['@user1',238,'img/user1.jpeg'],['@user2',220,'img/user2.jpeg'],['@user3',180,'img/user1.jpeg']]

如何从字符串中检索所有数据,或将其转换为数组?我甚至尝试过使用split功能,但我无法正确使用它。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

<强>更新

如果你掌控了Users.php,那么你可以通过在数据上使用json_encode()来解决问题。这将使用双引号来包装字符串,并在没有replace()

的情况下产生我在下面建议的内容

<强>以前

json希望字符串被双引号括起来。

所以黑客就是JSON.parse(data.replace("'", '"'))

如果返回的字符串中有任何双引号或转义的单引号,你当然可以绊倒。

答案 1 :(得分:-2)

这可能是一项工作,但是你有可能逃避字符串中的引号吗?然后它就可以解析了。

示例:从PHP发送以下响应:

[[\"@user1\",238,\"img/user1.jpeg\"],[\"@user2\",220,\"img/user2.jpeg\"]]

然后它应该能够使用JSON.parse()

进行解析

请确保您的回复中没有换行符。