我使用AJAX来获得"软实时"来自JSON文件的值。
实际上在我的服务器上,C程序正在用一些信息(200ms周期)更新Json文件。 在我的网页上,我得到这个Json文件,用250ms计时器显示这些信息。我使用Ajax来获取Json文件。
问题是当Json文件大小发生变化时,例如:
我的Json文件是:
{ "data1": { "val1": "12", "val2": "125"}, "data2": { "val1": "253", "val2": "0"} }
成为:
{ "data1": { "val1": "12", "val2": "14"}, "data2": { "val1": "253", "val2": "0"} }
发生错误,Ajax请求的响应是:
{ "data1": { "val1": "12", "val2": "14"}, "data2": { "val1": "253", "val2": "0"} }\u0
" \ U0"似乎取代了缺失的角色。
当文件变长时,会出现同样的情况,响应为:
{ "data1": { "val1": "12", "val2": "14"}, "data2": { "val1": "253", "val2": "0"}
缺少最后一个花括号。
我的Ajax Javascript代码是:
function getXMLHttpRequest() {
var xhr = null;
if (window.XMLHttpRequest || window.ActiveXObject) {
if (window.ActiveXObject) {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
} else {
xhr = new XMLHttpRequest();
}
} else {
alert("Your browser doesn't support the XMLHTTPRequest object ...");
return null;
}
return xhr;
}
function getDataAjax(callback, phpFile) {
xhr = getXMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
callback(xhr.responseText);
}
};
xhr.open("GET", phpFile, true);
xhr.send(null);
}
Json文件是正确的,但Ajax答案不是。
感谢您的帮助。