错误在jQuery的自动完成功能为“一个为空”
该功能被称为在文本框的onkeydown事件错误在jQuery的自动完成功能为“一个为空”
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
返回,否则它工作正常。
如何避免此错误?
如果您希望返回数据请求,但它返回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
}
}));
}
}
我认为,如果数据为空(如此处)。然后ajax将不会进入成功回调... – 2012-07-26 11:03:43
在这种情况下,我猜数据实际上不是null,而是一些没有必要的属性的试图运行映射的空白对象。实际上,即使返回的数据为空,成功回调也会被调用。你的服务器端代码看起来如何?只要你返回200 OK状态,成功回调就会被执行。 – 2012-07-26 11:05:01
我使用php,在服务器端代码刚刚返回'echo null;'没有结果。 – 2012-07-26 11:15:15
等待。所以你打'成功',但'数据'为空? – Sphvn 2012-07-26 10:56:54