繁体   English   中英

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

[英]Can I use JavaScript JSON.parse with an external array?

我需要从外部文件中获取数据; 我试图发出一个 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 功能,但我无法正确使用。

感谢您的帮助!

更新

如果您可以控制 Users.php,那么您可以通过对数据使用 json_encode() 来解决该问题。 这将使用双引号来包装字符串,并在没有 replace() 的情况下产生我在下面建议的结果

之前

json 期望字符串被双引号包围,而不是单引号。

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

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

可能有点麻烦,但是您是否可以转义字符串中的引号? 然后它就可以解析了。

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

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

然后它应该能够使用 JSON.parse() 进行解析

只要确保您的回复中没有换行符即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM