[英]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.