jquery自动完成函数中的错误为'a为null'

时间:2012-07-26 10:54:42

标签: jquery jquery-autocomplete

在文本框的onkeydown上调用此函数

function autoComplete(type, select) {
    $('#search_name').autocomplete({
    source: function( request, response ) {
        $.ajax({
        url: "/searches/autoComplete",
        dataType: "json",
        data: {
            term: $.trim(request.term)
        },
        success: function( data ) {
            response( $.map( data, function( item ) {
            return {
                label: item.value,
                value: item.value,
                type : item.type,
                id   : item.id
            }
            }));
        }
        });
    },
    minLength: 2,
    select: function( event, ui ) {
        var url = ui.item.type + '/edit/' + ui.item.id;
        $(location).attr('href', url);
    }
    });

}

在控制台中检查时收到如下错误

a is null

..."resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b...

只有在没有返回响应data时才会出现此错误,否则它将正常工作。

如何避免此错误?

1 个答案:

答案 0 :(得分:0)

如果您期望返回数据的请求,但它返回null,则不应将其视为成功但视为失败。在您的服务器代码中,如果您无法返回所请求的数据,则应返回404或类似内容。

修改:根据以下评论,似乎最好使用PHP中的header("HTTP/1.0 404 Not Found");解决此问题。

我想你也可以检查JavaScript以避免错误,但这不是一个干净的解决方案..

success: function( data ) {
    if(data) {
        response( $.map( data, function( item ) {
            return {
                label: item.value,
                value: item.value,
                type : item.type,
                id   : item.id
            }
        }));
    }
}