【问题标题】:JSON feed not populating source for autocompleteJSON 提要未填充源以进行自动完成
【发布时间】:2011-11-24 11:18:35
【问题描述】:

注意到很多人都有这个问题!不过,它们似乎都没有解决我的问题!

我的 JSON 提要是 http://menu.the-dot.co.uk/getingredients.php?func=json

我在http://jsfiddle.net/OwenMelbz/xgQnQ/ 有一个小提琴设置,其中包含要测试的代码

$(function() {
$("#food").autocomplete({
    source: "http://menu.the-dot.co.uk/getingredients.php?func=json",
    minLength: 2,
    dataType: "json",
    select: function(event, ui) {
        log(ui.item ? "Selected: " + ui.item.value + " aka " + ui.item.id : "Nothing selected, input was " + this.value);
    }
});
});

这实际上是从 jqueryui.com 上的演示页面复制和粘贴的,除了添加的数据类型和添加的源,以及更改选择器!

基本上,您使用此提要在框中输入内容。什么都没有出现。您使用 source: myArray 在框中键入它可以工作,有人看到我提供的代码和演示的问题吗?

谢谢

【问题讨论】:

  • JSON输出不应该是一个数组,而不是一个对象吗?
  • 这是我第一次接触json,所以不知道有什么区别,远程源的jquryui网站文档是不存在的。
  • 您可以将dataType: "json" 更改为dataType: "jsonp" 以克服跨域问题

标签: jquery json autocomplete external


【解决方案1】:

您从哪里发送请求。和

一样吗

http://menu.the-dot.co.uk/

如果不一样,你会遇到cross domain request的问题。请使用 chrome 开发者工具或 firebug 检查响应。查看是否有任何错误发生。

【讨论】:

  • 是的:XMLHttpRequest cannot load *trimmed*. Origin http://fiddle.jshell.net is not allowed by Access-Control-Allow-Origin.(对于已发布的小提琴)
  • 它在同一个域上,我只是用小提琴来显示我的代码
【解决方案2】:

您的 JSON 格式不正确。否则它工作正常,jsFiddle

【讨论】:

  • 我通过验证器运行它,它说没问题。据我所知,更新后的小提琴不是标准的 javascript 数组而不是 json 对象吗?
  • 是的,你需要一个数组。您已经创建了一个“对象”,在最宽泛的解释下,它是一次又一次地重命名相同的属性(成分)。
【解决方案3】:

好吧,我认为我认为问题不在于任何代码,而是传递 JSON 的 php 脚本没有按照自动完成的预期表现。

因此,我创建了我的数据库的 javascript 数组版本,现在是 http://menu.the-dot.co.uk/getingredients.php?func=js

并将此脚本包含在页面的标题中,因此它将数据库内容加载到 javascript 数组中,然后我使用自动完成来读取数组。来自服务器的请求也更少。可爱的欢乐。

http://menu.the-dot.co.uk/body.html?page=find

完美运行 :) 它是一个 ios webapp,所以请原谅讨厌的浏览器视图 :)

【讨论】:

    猜你喜欢
    • 2011-11-15
    • 2016-07-02
    • 1970-01-01
    • 2015-10-25
    • 2016-02-08
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    • 2022-06-14
    相关资源
    最近更新 更多