【问题标题】:How to entirely remove the default query-string used in JQuery Autocomplete如何完全删除 JQuery 自动完成中使用的默认查询字符串
【发布时间】:2011-12-14 20:00:03
【问题描述】:

我在尝试弄清楚如何在以下情况下使用 JQuery 自动完成时遇到了麻烦。

我正在尝试将它连接到返回 JSON 对象的 Web 服务。 URL 形式如下:

host/api/schools/{search-term}

没有查询字符串?term= 或其他任何内容。

如何设置自动完成来执行此操作?我对 JavaScript 很陌生,但我可以应付。

我尝试了以下一点:

$(...).autocomplete({
    source: function(term, callback) {
        $.getJSON("url", { foo: term }, callback);
    }
});

但不能完全让它将host/api/schools/{search-term} 传递给服务器(使用提琴手检查时,它会显示为host/api/schools/?foo%5Bterm=%5D{search-term},其中{search-term} 是输入的文本。

帮助?

【问题讨论】:

  • 肯定也尝试过,但提琴手显示 host/api/schools/[object%20Object] 被传递到服务器。任何其他方式来修改术语,使其成为预期的字符串?
  • 对不起 $.getJSON("url/" + term.term, callback) jqueryui.com/demos/autocomplete
  • 这绝对成功了。 Javascript太奇怪了。非常感谢!

标签: javascript jquery autocomplete query-string


【解决方案1】:

在这里添加它,因为它基本上回答了来自 jquery-ui 文档的问题:

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

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

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

【讨论】:

  • 我不明白为什么这回答了问题或为什么它被接受了。我在 2020 年使用 1.12 版本为此苦苦挣扎,使用响应会自动添加默认查询字符串,从而在我的 RESTFul 服务器中触发路由未找到异常。
猜你喜欢
  • 2013-05-11
  • 1970-01-01
  • 1970-01-01
  • 2017-10-26
  • 2019-11-10
  • 2014-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多