我有自动完成jqueryUI的代码:
.autocomplete({
source: function( request, response ) {
var results = $.getJSON( url, {
term: extractLast( request.term )
}, response );
console.log(results);
},...
var' results'的console.log如下所示:
我需要提取响应或responseText字段以测试是否为空并弹出错误且未找到匹配项。但没有任何方法可以检索该字段:
results.response
results.getResponse()
results.getResponseHeader()
这两种方法都不奏效。感谢
这两个答案都有效:它可以正确地返回我的回复。我可以测试它..但它打破了我的自动完成。我还在调查它。
第三种变体,即回调,提供了最大的灵活性,可用于将任何数据源连接到自动完成。回调有两个参数:
一个请求对象,其中引用了一个名为“term”的属性 到文本输入中当前的值。例如,当用户 在城市字段中输入“new yo”,自动填充术语将相等 “新哟”。
响应回调,它需要一个参数 包含要向用户建议的数据。应过滤此数据 基于所提供的术语,并且可以是所描述的任何格式 上面是简单的本地数据(String-Array或Object-Array with 标签/价值/两个属性)。提供自定义时很重要 源回调以在请求期间处理错误。你必须永远 即使遇到错误也会调用响应回调。这个 确保窗口小部件始终具有正确的状态。
这是关于source by callback函数的jquery UI自动完成文档。我无法理解为什么新版本无效
答案 0 :(得分:1)
如果你想要你想做的回应
var results = $.getJSON( url, {
term: extractLast( request.term )
}, function(response) {
console.log(response);
});
答案 1 :(得分:1)
.getJSON是异步的,会在回调函数中返回结果。
因此,将代码更改为以下内容:
.autocomplete({
source: function( request, response ) {
var results = $.getJSON( url, {
term: extractLast( request.term )
}, function( results ) {
console.log( results );
});
}, ...
);
如果由于某种原因需要进行同步调用,则可以使用jQuery的.ajax函数,而async
选项设置为false。
答案 2 :(得分:0)
执行jQuery的ajax函数时需要成功回调。您应该阅读documentation。