0

我正在尝试使用下面的 jQuery 进行 ajax 调用。

但我可以在 Chrome 中看到,我收到未捕获的 typeerror cannot read property 'error' of null。所以这会阻止预加载器消失。知道为什么要这样做吗?

function appendTeam(){

$.ajax({

       url : _path + "/core/ajax.php",
       type : 'POST',
       data : { f: 'getTeam'},
       dataType : 'json',
       success :  function(data) {

        if(data.error){

            errorMessage('Error: ' + data.error, data.error, data.error);
            return false;

        }else{
            var count = 0;
            $.each(data.team, function(i, c){
                // check
                if(!$('#'+c)) return true;
                var element = $('#'+c);
                $('input[name="s'+i+'"]').val(element.attr('id'));
                $('.slot.'+(i+1)+'.ui-droppable').append(element);
                element.data('prevParent', $('.slot.'+(i+1)+'.ui-droppable'));
                count ++;

            });

            appendStatus(count);
            setTimeout(function(){
                $('#preloader').fadeOut('fast',function(){
                    $('#preloader').remove();
                    popUp('match');
                });
            }, 2000);


        }

    }
});
}
4

4 回答 4

6

您的操作员有一个错误if

if(data.error)...

您应该像if(data && data.error)...这样检查它,如果服务器返回您null而不是 JSON 对象,您将不会尝试访问对象的属性error

另外,也许您需要单独处理这种情况:

if(!data) {
    // handle empty response
} else if(data.error) {
    // handle error
} else {
    // process results
}
于 2013-10-08T04:50:51.387 回答
0

在尝试访问他的财产之前测试是否data不是nullerror

于 2013-10-08T04:50:57.623 回答
0

可能该data对象不包含该属性error或者它为空;

所以而不是这个

if(data.error) {

你可以用不同的方式检查它:

if(data && data.hasOwnProperty('error')) {

哪个更安全。

于 2013-10-08T04:55:02.177 回答
0

我认为响应为空尝试查看使用萤火虫的响应 在此处输入图像描述

于 2013-10-08T05:07:42.273 回答