如何从xmlhttprequest中检索响应? (截图)

时间:2012-03-19 12:26:54

标签: javascript jquery ajax xmlhttprequest response

我有自动完成jqueryUI的代码:

.autocomplete({
  source: function( request, response ) {
  var results = $.getJSON( url, {
    term: extractLast( request.term )
  }, response );      
  console.log(results);
},...

var' results'的console.log如下所示: enter image description here

我需要提取响应或responseText字段以测试是否为空并弹出错误且未找到匹配项。但没有任何方法可以检索该字段:

results.response
results.getResponse()
results.getResponseHeader()

这两种方法都不奏效。感谢

这两个答案都有效:它可以正确地返回我的回复。我可以测试它..但它打破了我的自动完成。我还在调查它。

  

第三种变体,即回调,提供了最大的灵活性,可用于将任何数据源连接到自动完成。回调有两个参数:

     

一个请求对象,其中引用了一个名为“term”的属性   到文本输入中当前的值。例如,当用户   在城市字段中输入“new yo”,自动填充术语将相等   “新哟”。

     

响应回调,它需要一个参数   包含要向用户建议的数据。应过滤此数据   基于所提供的术语,并且可以是所描述的任何格式   上面是简单的本地数据(String-Array或Object-Array with   标签/价值/两个属性)。提供自定义时很重要   源回调以在请求期间处理错误。你必须永远   即使遇到错误也会调用响应回调。这个   确保窗口小部件始终具有正确的状态。

这是关于source by callback函数的jquery UI自动完成文档。我无法理解为什么新版本无效

3 个答案:

答案 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