【问题标题】:Get value from object within JQuery each function从 JQuery 每个函数中的对象获取值
【发布时间】:2018-02-26 19:03:47
【问题描述】:

我有一个包含关联数组的对象

数组中存储的值是一个Object

在每个函数中,我想访问值对象中的一个值 (responseText)

我的代码如下

 var apiNameArray = getDataSourceApiNames();
        var apiResults = {};
        var deferred;

        for (let i = 0; i < apiNameArray.length; i++) {
            var apiName = apiNameArray[i];
            console.log("apiName = " + apiName);
            deferred = $.ajax({
                    type: "GET",
                    url: api_URL + "memberdetails/" + memberNumber,
                    contentType: "application/json; charset=utf-8",
                    dataType: "json"
                }
            );
            apiResults[apiName] = deferred;
        }

        $.when.apply($, apiResults).then(function () {
            console.log(apiResults);
            $.each(apiResults, function (key, value) {
                console.log(key);
                console.log(value);
                console.log(value.responseText);
           });
        });

由于某种原因,value.responseText 返回未定义。我应该如何访问这个值/属性?我试过value["responseText"]apiResults[key].responseText都没有成功

【问题讨论】:

  • 你也可以显示ajax请求代码吗?您所追求的价值似乎超出了范围。
  • 使用JSON.parse()方法。
  • 如果第一个截图是console.log(apiResults);的OP,那么你可以像apiResults[0]['responseText']一样简单地访问responseText。您可以将0 替换为循环索引。
  • 修改后显示 AJAX 调用
  • @swetanshkumar - 它已经是一个对象

标签: javascript jquery json ajax


【解决方案1】:

由于apiResults 是一个对象,您可以通过键循环并使用apiResults[key].responseText 访问值。

$.when.apply($, apiResults).then(function () { $.each(apiResults, function (key, value) { console.log(apiResults[key].responseText); }); });

$.when.apply($, apiResults).then(function () { Object.keys('apiResults').forEach(function(item, index){ console.log(apiResults[item].responseText) }) });

这里Object.keys 将返回一个对象中所有键的数组。

【讨论】:

  • 这仍然返回未定义的 apiResults[key].responseText
  • @mike 你能创建一个你的代码的小提琴吗?根据我的理解,上面的代码应该可以工作。
  • 如何在 jsfiddle 中模拟 AJAX 响应?
  • 将响应保存在 JS 变量中并运行循环。
  • 我将撤消否决票并将其标记为答案 - 这是因为我的承诺在填充数组之前没有等待 API 成功完成。所以当我遍历这些值时,它是空的(因此是未定义的)
猜你喜欢
  • 2017-11-25
  • 2016-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多