Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery自动完成函数中的错误为';a为空';_Jquery_Jquery Autocomplete - Fatal编程技术网

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

jquery自动完成函数中的错误为';a为空';,jquery,jquery-autocomplete,Jquery,Jquery Autocomplete,此函数在文本框的onkeydown上调用 function autoComplete(type, select) { $('#search_name').autocomplete({ source: function( request, response ) { $.ajax({ url: "/searches/autoComplete", dataType: "json", data: {

此函数在文本框的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...
只有在未返回任何响应
数据
时才会出现此错误,否则工作正常


如何避免此错误?

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

编辑:从下面的评论来看,似乎最好使用
标题(“HTTP/1.0 404未找到”)来解决这个问题在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
            }
        }));
    }
}

等待所以你点击了
success
,但是
data
是空的吗?我想,如果数据是空的(如下所示)。那么ajax将不会进入成功回调…在这种情况下,我猜数据实际上不是空的,而是一些没有您尝试运行映射所需属性的空白对象。实际上,即使返回的数据为null,也会调用成功回调。您的服务器端代码看起来如何?只要返回200 OK状态,就会执行成功回调没有结果。尝试使用
标题(“HTTP/1.0 404未找到”)并查看发生了什么。我从不使用PHP,但类似的东西应该可以用。谢谢。。这将导致jQuery运行其错误处理程序,从而导致Ajax延迟失败。我需要返回404还是javscript检查?因为它只是一个自动完成的下拉列表会在响应时下拉,否则不要。。。