【问题标题】:Jquery Autocomplete with json fails带有json的Jquery自动完成失败
【发布时间】:2011-04-10 19:41:37
【问题描述】:

我正在使用Devbridge 的自动完成插件,我已经将它全部安装在这里是我的代码:

$(document).ready(function(){
    $('#request_task').autocomplete({
      serviceUrl: '<%= ajax_path %>',
      minChars:1,
      width: 300,
      delimiter: /(,|;)\s*/,
      deferRequestBy: 0, //miliseconds
      params: { artists: 'Yes' },
    });

});

这个请求会触发我的 rails 操作并返回这个 json。只返回一个对象,但大多数时候会有超过 1 个...这只是一个测试用例:

[
    {
        "user": {
            "salt": "somthing",
            "name": "john",
            "encrypted_password": "92dadsfa6b001ffe71c3c1d8e9fb76c42d1c8afeffa739de9063d94206c",
            "created_at": "2010-09-10T14:10:54Z",
            "updated_at": "2010-09-10T14:10:54Z",
            "admin": null,
            "id": 1,
            "remember_token": "c945522b3eb0a25e36bb39155fc05b3eec301ac5e2196956f2e6f86b4b22c987",
            "email": "test@gmail.com"
        }
    }
]

我可以清楚地看到萤火虫中的请求,但我没有得到任何自动完成的东西,而且它出错了......我错过了什么......我的错误是

a.suggestions is undefined

【问题讨论】:

    标签: javascript jquery ruby-on-rails json autocomplete


    【解决方案1】:

    真诚的建议,不要构造 JSON 字符串。请去API。
    如果您使用的是 java,请查看http://www.json.org/java/
    并确保将内容类型设置为application/json

    【讨论】:

      【解决方案2】:

      您的 JSON 格式错误

      检查它们的正确格式

      {
       query:'Li',
       suggestions:['Liberia','Libyan Arab Jamahiriya','Liechtenstein','Lithuania'],
       data:['LR','LY','LI','LT']
      }
      

      【讨论】:

        【解决方案3】:

        我认为您需要进一步阅读开发人员页面,因为您的回复格式错误:

        为 Ajax 提供数据的网页 自动完成,在我们的例子中 autocomplete.ashx 将收到 GET 使用查询字符串 ?query=Li 请求, 它必须返回 JSON 数据 以下格式:

        {
         query:'Li',
         suggestions:['Liberia','Libyan Arab Jamahiriya','Liechtenstein','Lithuania'],
         data:['LR','LY','LI','LT']
        }
        

        注意事项:

        查询 - 原始查询值
        建议 - 建议值数据的逗号分隔数组
        (可选)- 数据数组,包含选择数据时回调函数的值。

        【讨论】:

        • 这可能是问题所在,因为我不确定这个插件。但如果是这种情况,它可能不是正确的解决方案,因为您与格式紧密耦合。试试docs.jquery.com/Plugins/Autocomplete/autocomplete,它可以支持任何格式,并且使用非常好的回调方法支持具有非常好的插件能力
        • 我不认为这是严格意义上的紧密耦合。我希望我的 ViewModel(或服务器端代码)会查询我的数据源并为 View 相应地格式化输出,在这种情况下,它是自动完成。从我对您的替代方案的了解来看,您仍然必须返回一个字符串数组或一个 key=>value 对数组。该文档不足以知道您的上述输出格式是否会被读取。最后,如果您不需要该格式的所有数据,为什么要将其发送给客户端?你可以透露一些你不应该透露的东西。
        猜你喜欢
        • 2012-04-04
        • 2010-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-04
        • 2012-03-28
        • 1970-01-01
        相关资源
        最近更新 更多