0

此函数在文本框的 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,否则它工作正常。

如何避免这个错误?

4

1 回答 1

0

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

编辑:从下面的评论来看,这似乎最好header("HTTP/1.0 404 Not Found");在 PHP 中解决。

我想你也可以只签入 JavaScript 以避免错误,但这并不是一个真正干净的解决方案..

success: function( data ) {
    if(data) {
        response( $.map( data, function( item ) {
            return {
                label: item.value,
                value: item.value,
                type : item.type,
                id   : item.id
            }
        }));
    }
}
于 2012-07-26T10:58:59.947 回答