jquery自动完成函数中的错误为';a为空';
此函数在文本框的onkeydown上调用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: {
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检查?因为它只是一个自动完成的下拉列表会在响应时下拉,否则不要。。。