我的javascript代码自动完成调用ajax从test2.php获取结果(json)(查询数据) 它有效,如果有结果,如果结果为空自动完成应该消失但不会消失 我尝试得到一些错误或错误,在控制台的浏览器上显示F12" Uncaught TypeError:无法读取属性' length' of null"
<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
<script type="text/javascript" src="https://code.jquery.com/ui/1.11.3/jquery-ui.min.js"></script>
<script type="text/javascript">
$('#name1').autocomplete({
source: function( request, response ) {
var name = $('#name1').val();
$.ajax({
url: 'test2.php',
dataType: 'json',
data: {
p : name
},
success: function(data) {
response($.map(data, function(item) {
return {
value : item.name
};
}));
}
});
},
minLength: 1,
select: function(event, ui) {
$(this).val(ui.item.value);
}
});
</script>
请帮助我新手jquery ajax
答案 0 :(得分:1)
如果返回空结果,请查看这是否有帮助。 Null值上的任何肌动蛋白都会抛出错误。所以添加了“if(data){做某事......}”,这样你就可以在那里应用你的逻辑了。
<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
<script type="text/javascript" src="https://code.jquery.com/ui/1.11.3/jquery-ui.min.js"></script>
<script type="text/javascript">
$('#name1').autocomplete({
source: function( request, response ) {
var name = $('#name1').val();
$.ajax({
url: 'test2.php',
dataType: 'json',
data: {
p : name
},
success: function(data) {
if(data){
response($.map(data, function(item) {
return {
value : item.name
};
}));
}else{alert("No result so do some thing")}
}
});
},
minLength: 1,
select: function(event, ui) {
var test = ui.item ? ui.item.id : 0;
if (test > 0)
{
$(this).val(ui.item.value);
}
}
});
</script>
答案 1 :(得分:0)
我使用.autocomplete(&#39; close&#39;)来解决我的问题。谢谢你的每一个答案和评论;)
success: function(data) {
if(jQuery.isEmptyObject(data)){
$('#name1').autocomplete( "close" );
}else {
response($.map(data, function(item) {
return {
value : item.name
};
}));
}
}