【问题标题】:How to parse this API return in jQuery?如何在 jQuery 中解析这个 API 返回?
【发布时间】:2019-05-21 16:05:26
【问题描述】:

我正在尝试循环产品数组中的所有项目。 使用 ajax 调用,我从 API 获得以下响应:

productData = {"product":[{"id":"9200000083451240","title":"Apple Lightning Cable"},{"id":"9200000098453451","title":"Apple iPhone XR"}],"totalResultSize":2}

正如您所见,我需要的数据位于变量“productData”中,如何从我的 AJAX 响应数据中访问它?

我尝试了 data.productData.product 和其他一些东西,但没有任何效果。

    var searchTerm = $("#searchterm").val();

    $.ajax({
        url: 'https://api.com/search?term=' + searchTerm,
        type: 'GET',
    }).done(function (data) {
        $.each(data.productData.product, function (index, element) {
            console.log(element.title);
        });
        console.log('---- Data ----');
        console.log(data);
    });

请帮忙。

【问题讨论】:

  • 您是说第一个代码示例是您返回到 AJAX 请求的内容吗?如果是,则无效;您需要从一开始就删除productData =
  • @RoryMcCrossan 是的,第一个代码示例是 ajax 调用数据有效负载。简单地剥离“productData =”是一种选择,但这是要走的路还是我应该以不同的方式处理?
  • 您必须将其删除,没有其他选择。您现在返回的不是有效的 JSON。另请注意,您在数组的第一个对象中的属性之间缺少逗号。一旦你修复了这个改变循环通过data.product,你的逻辑就会起作用。
  • @RoryMcCrossan 好的!估计是我想太多了。谢谢

标签: javascript jquery json api


【解决方案1】:
productData = {"product":[{"id":"9200000083451240","title":"Apple Lightning Cable"},{"id":"9200000098453451","title":"Apple iPhone XR"}],"totalResultSize":2}

不是有效的 json 响应。

{"product":[{"id":"9200000083451240","title":"Apple Lightning Cable"},{"id":"9200000098453451","title":"Apple iPhone XR"}],"totalResultSize":2}

是有效的 json 响应,可以使用:

// after success in ajax
.done(function (data) {
   console.log(data.product);   // More under it
   console.log(data.totalResultSize);
})

【讨论】:

    【解决方案2】:

    要将您的响应 data 作为 JS 对象,您必须调用此函数:

    var obj = JSON.parse('{ "name":"John", "age":30, "city":"New York"}');
    

    来源:JSON.parse()

    要在 json 对象中迭代对象,您可以使用 $.each() 函数:

    var obj = {
    one: 1,
    two: 2,
    three: 3,
    four: 4,
    five: 5
    };
    $.each(obj, function (index, value) {
    console.log(value);
    });
    

    来源:$.each()

    【讨论】:

      【解决方案3】:

      从 API 响应中删除“productData =”部分(如 Rory McCrossan 所建议),然后使用 JSON.parse(感谢 sohaieb)。我现在可以循环产品了。谢谢!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-20
        • 1970-01-01
        • 2013-11-20
        • 1970-01-01
        • 2020-05-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多