语法错误jquery句柄json

时间:2013-12-10 18:11:33

标签: javascript jquery

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();     
});

2 个答案:

答案 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调用的“错误”功能,因为它会抛出一个解析异常。

希望这会对你有所帮助。

此致

马塞洛