【问题标题】:jQuery autocomplete doesn't send any requestjQuery自动完成不发送任何请求
【发布时间】:2013-02-26 08:16:58
【问题描述】:

我已经创建了很多自动完成功能,从来没有出现过问题。 这一次,我尝试在现有页面中插入自动完成功能(非常复杂并且有很多 javascript 调用)

我的代码很简单:

$('#named_invitees_0_user_id').autocomplete({
  source: 'www.bidon.com'
});

我试过了:

  • 在 $(document).ready() 函数中为这个 javascript 充电
  • 在页面加载时不收取此 javascript,然后在 Firebug 控制台中执行之前的代码
  • 为自动完成添加一些参数(minLength、disabled、delay、beforeSend、...)
  • 在源上设置数组

在这两种情况下,我的输入“理解”我的自动完成功能,因为它需要一些自动完成特定的属性

<input id="named_invitees_0_user_id" name="named_invitees[0][user_id]" type="text" value="aaaa" autocomplete="off" class="ac_input">

但是当我在我的输入上写一些东西时,永远不会发送任何请求(关于 Firebug 网络活动)。我认为页面上已经存在的一些 javascript 正在跟踪此查询的控制,但我不知道它可能是什么。

你呢?

编辑:

感谢您的回复。我听从你的建议:

  • 尝试将数组设置为“源”:不会改变任何内容
  • 删除该页面的所有 JS:只加载了 jQuery-1.4.3 和 jQuery-ui-1.8.20:没有任何改变
  • 将 minLength 的值更改为 1:不会改变任何内容
  • 检查源url是否返回JSON:已确认
  • 检查源网址是否在我的网站命名空间中:已确认

编辑2:

发现问题!

某处有一个隐藏的 JS 代码...一个旧的“自动完成”jquery 包含。结果:定义了 2 个自动完成。 我删除了这个隐藏的代码,一切正常!

感谢您的回复。

【问题讨论】:

  • 在您的网站上吗?另外,您知道它目前处于关闭状态,对吗?
  • bidon 是法语单词“foobar”。我可以写“/”、“#”或我网站的真实路径(它适用于其他页面),这不会改变任何事情。
  • 由于页面“非常复杂”,您可能希望退出页面上除此脚本和 jQuery/jQuery UI 之外的所有 JS。如果它不起作用,请调试(或更新您的问题)。如果它确实有效,请继续添加脚本,直到找到冲突为止。
  • minLength 的值是多少?也许一些现有的代码将其全局设置为一些巨大的价值。或者,有人可能会覆盖.autocomplete()
  • 我编辑了我要回复的第一条消息。

标签: javascript jquery autocomplete


【解决方案1】:

确保您的源输出正确的 json。

查看http://jqueryui.com/autocomplete/#remote 获取文档和示例代码

这是一个例子:

 $( "#named_invitees_0_user_id" ).autocomplete({
      source: "search.php",
      minLength: 2
    });

在源之后使用“:”!

【讨论】:

  • 抱歉,我忘记了消息中的“:”,而不是我的代码。源可以输出 XHTML、JSON、JS、XML 或任何东西:自动完成必须发送请求来检查类型。未发送任何请求。
  • 是的,如果没有发送请求,“search.php”(或任何来源)在请求真正离开浏览器之前是无关紧要的。
  • 然后确保正在使用的源和页面自动完成功能托管在同一域上。无法使用 ajax 发送跨域请求。您也可以尝试使用 $.ajax 发送 ajax 请求,以确保 ajax 正常工作
  • 控制台没有错误? CTRL+SHIFT+J 看看控制台有没有错误。
猜你喜欢
  • 1970-01-01
  • 2011-07-30
  • 2013-02-08
  • 1970-01-01
  • 2011-04-20
  • 2010-10-25
  • 1970-01-01
  • 1970-01-01
  • 2011-09-21
相关资源
最近更新 更多