【问题标题】:Accessing json object using Jquery $.ajax() in a generic way以通用方式使用 Jquery $.ajax() 访问 json 对象
【发布时间】:2013-10-22 22:37:18
【问题描述】:

我正在使用 jqueryui 自动完成功能,想知道是否有一种通用方法可以使用 $.ajax() 访问 Json 对象项。在下面的示例中,文本/值对是 item.Title 和 item.AlbumId,它工作正常。但我想知道是否有办法访问它,如 item[0]、item[1]。我试过了,还是不行。

    // jqueryui autocomplete configuration
    $(element).autocomplete({
                   minLength: minimumTextLength, 
                   source: function (req, response) {    

                       // call $.ajax()
                       $.ajax({
                           url: filterUrl,
                           type: "POST",
                           dataType: "json",
                           data: { term: textbox.val() },
                           success: function (data) {
                               response($.map(data, function (item) {

                                   return { label: item.Title, value: item.AlbumId }; 
                               }));
                           }
                       });

                   }
               }); //  end of autocomplete()

【问题讨论】:

  • 您可以从服务器返回一个 json 格式的响应,然后 jQuery 能够将字符串转换为一个普通的 js 对象 .. 像 {items:[{"label":"foo", "value":"bar"},...]}
  • 响应是一个json对象
  • 那我不明白你在找什么..

标签: javascript jquery ajax json jquery-ui


【解决方案1】:

您可以使用Object.keys 间接执行此操作。这样你就可以参考item[keys[index]]

response($.map(data, function (item) {
    var keys = Object.keys(item);
    return { label: item[keys[0]], value: item[keys[1]] }; 
}));

注意 Object.keys 是 only supported by modern browsers (IE9+)。不过,如果需要,您可以一如既往地polyfill

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多