【问题标题】:How to retrieve response from xmlhttprequest? (screenshots)如何从 xmlhttprequest 中检索响应? (截图)
【发布时间】:2012-03-19 12:26:53
【问题描述】:

我有这个自动完成 jqueryUI 的代码:

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

var 'results' 的 console.log 如下所示:

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

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

这些方法都不起作用。谢谢

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

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

一个请求对象,具有一个名为“term”的属性,它指的是 到文本输入中当前的值。例如,当用户 在城市字段中输入“new yo”,自动完成项将等于 “新哟”。

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

这是关于回调函数源的 jquery UI 自动完成文档。我不明白为什么新版本不起作用

【问题讨论】:

    标签: javascript jquery ajax xmlhttprequest response


    【解决方案1】:

    如果你想要你可能想做的回应

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

    【讨论】:

    • 它适用于测试..但它破坏了我的自动完成..现在没有选项下拉列表:(
    • @alex 控制台中弹出什么?
    【解决方案2】:

    .getJSON 是异步的,会在回调函数中返回结果。

    因此,将您的代码更改为以下内容:

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

    如果您出于某种原因需要进行同步调用,您可以使用 jQuery 的 .ajax 函数,并将 async 选项设置为 false。

    【讨论】:

      【解决方案3】:

      在执行 jQuery 的 ajax 函数时,您需要一个成功回调。你应该阅读documentation

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-15
        • 1970-01-01
        • 2012-01-17
        • 2010-11-25
        • 2014-07-12
        • 1970-01-01
        • 2016-11-29
        • 1970-01-01
        相关资源
        最近更新 更多