我需要从外部文件中获取数据;我试图发出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功能,但我无法正确使用它。
感谢您的帮助!
答案 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()
进行解析请确保您的回复中没有换行符。