Firebug说,附近存在语法错误:
if (json['name'] !="")
但我仍然找不到它。这是在服务器发送响应之前挂起的长轮询脚本的一部分。当服务器响应为空时,它会将错误抛出if (json['name'] !="")
var timestamp=null;
function waitForMsg(){
$.ajax({
type: "GET",
url: "auth/classes/getdata.php?id="+6,
async: true,
cache: false,
success: function(data){
var json=eval('('+data+ ')');
if (json['name'] !=""){
if(json['type'] ==1){
$.notification({
content: json['name']+" liked a post",
showTime: true,
icon: '8',
timeout: 10000,
click: function() {
window.location.href = "http://www.test.com/posts.php?post="+json['post'];
}
});
}
if(json['type'] ==2){
$.notification({
content: json['name']+" disliked a post",
showTime: true,
icon: 'Y',
timeout: 10000,
click: function() {
window.location.href = "http://www.test.com/posts.php?post="+json['post'];
}
});
}
if(json['type'] ==3){
$.notification({
content: json['name']+" commented a post",
showTime: true,
icon: 'i',
timeout: 10000,
click: function() {
window.location.href = "http://www.teest.com/posts.php?post="+json['post'];
}
});
}
}
setTimeout("waitForMsg()",1000);
},
error: function(XMLHttpRequest,textStatus,errorThrown) {
// alert("error: "+textStatus + " "+ errorThrown );
setTimeout("waitForMsg()",15000);
}
});
}
$(document).ready(function() {
waitForMsg();
});
答案 0 :(得分:1)
When the server response is empty, it throws the error near if (json['name'] !="")
因此,请检查是否有数据
if(!data || !data.length) {
return;
}
var json=eval('('+data+ ')');
现代浏览器支持JSON.parse(),如果从服务器返回正确的内容类型,jQuery也会自动为您执行此操作。
答案 1 :(得分:1)
为什么不使用“dataType:'json'”作为ajax调用的属性?这将从响应中创建一个json对象,您可以直接使用该变量。
$.ajax({
type: "GET",
url: "auth/classes/getdata.php?id="+6,
async: true,
cache: false,
dataType: "json",
success: function(data){
var json=data; //or you can work directly with data
如果从服务器返回空消息(“”而不是“{}”),它将触发ajax调用的“错误”功能,因为它会抛出一个解析异常。
希望这会对你有所帮助。
此致
马塞洛