我正在使用像这样的jquery autocomple插件
$( "#city" ).autocomplete({
source: function( request, response ) {
$.ajax({
url: "http://www.abc.com/test.php",
dataType: "jsonp",
data: {
featureClass: "P",
style: "full",
maxRows: 12,
name_startsWith: request.term
},
success: function( data ) {
alert("hello");
}
});
},
minLength: 2,
select: function( event, ui ) {
log( ui.item ?
"Selected: " + ui.item.label :
"Nothing selected, input was " + this.value);
},
open: function() {
$( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
},
close: function() {
$( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
}
});
我没有获得任何成功的警报。
Firefox正在显示我将此作为回复
[{"label":"mark2","value":1},{"label":"abc1","value":20}]
它还有什么其他回报
答案 0 :(得分:3)
鉴于example you've taken this from工作正常,并使用jsfiddle复制相同的示例按预期工作,您的工作不起作用的原因可能是您的页面中的其他位置有javascript错误,这是停止进一步执行javascript。
另外,我复制了这个示例,只更改了alert
成功回调 - 这也是works fine但是你应该注意jQueryUI自动完成的文档声明:
提供自定义源回调以处理请求期间的错误非常重要。 即使遇到错误,也必须始终调用响应回调。这可确保窗口小部件始终具有正确的状态。
这不是你的错误,但值得注意!
编辑我想到了一个问题,如果您的ajax调用实际上是在生成服务器端错误(http500),那么您将永远不会输入success
回调,并且永远不会得到您的回复警报。尝试向ajax调用添加错误回调以查看是否是这种情况:
$.ajax({
url: "http://www.abc.com/test.php",
dataType: "jsonp",
data: {
featureClass: "P",
style: "full",
maxRows: 12,
name_startsWith: request.term
},
success: function( data ) {
alert("hello");
},
error: function (xhr, textStatus, errorThrown){
alert("error: " + errorThrown);
}
});