gpt4 book ai didi

javascript - 为什么我的 ajax GET 数据会生成一个奇怪的 JSON 对象?

转载 作者:行者123 更新时间:2023-12-02 17:52:53 24 4
gpt4 key购买 nike

警告:可能是一个愚蠢的问题。

我有一个像这样的ajax get请求:

$.getJSON("/recruiting/countries/all/", function (data) {
$.each(data, function (name, key) {
var dropdownCountry = new DropdownCountry();
dropdownCountry.name = name;
dropdownCountry.key = key;
self.orgCountryDdl.push(dropdownCountry);
});
alert(JSON.stringify(self.orgCountryDdl()));
});

它点击一个网址并有一个国家/地区列表:名称和 key 。

我正在尝试分配数据并最终填充国家列表的 knockout js可观察数组。此 GET 请求中引用的其他 JavaScript 代码:

var DropdownCountry = function (name, key) {
this.name = name;
this.key = key;
};

function UserRecruitingViewModel(apiBaseUrl, userId) {
var self =this;
//...snip...
//ddl country stuff
self.orgCountryDdl = ko.observableArray();
self.selectedOrgCountry = ko.observable();
var DropdownCountry = function (name, key) {
this.name = name;
this.key = key;
};
self.selectedOrgCountry = ko.observable();
///..get request in here...
};

在我收到的警报中,我看到返回的数据:

 [
{"name":0,"key":{"Id":1,"Name":"Albania"}}
,{"name":1,"key":{"Id":2,"Name":"Algeria"}}
,{"name":2,"key":{"Id":3,"Name":"American Samoa"}}
,{"name":3,"key":{"Id":4,"Name":"Andorra"}}
,{"name":4,"key":{"Id":5,"Name":"Angola"}}
,{"name":5,"key":{"Id":6,"Name":"Anguilla"}}
,{"name":6,"key":{"Id":7,"Name":"Antarctica"}}
...snip...
]

发生了什么事,将其放入 knockout 可观察数组的最简洁方法是什么?

抱歉:期望的结果是这个数据:

 [
{"Id":1,"Name":"Albania"}
,{"Id":2,"Name":"Algeria"}
,{"Id":3,"Name":"American Samoa"}
...snip...
]

我实际上是偶然发现的:

$.getJSON("/recruiting/countries/all/", function (data) {
$.each(data, function (name, key) {
var dropdownCountry = new DropdownCountry();
dropdownCountry.name = key.Name;
dropdownCountry.key = key.Id;
self.orgCountryDdl.push(dropdownCountry);
});
alert(JSON.stringify(self.orgCountryDdl()));
});

第二个函数变量有我想要的数据。有人可以解释这是为什么吗?我对 ajax 调用还很陌生,所以我什至不知道要谷歌什么。

最佳答案

$.each is defined as follows:

jQuery.each( collection, callback(indexInArray, valueOfElement) )

这意味着当您调用时:

$.each(data, function (name, key) { ...

您正在迭代数据数组中的每个元素。上面的 name 参数将被设置为它正在迭代的元素的当前索引,而 key 是值。 jQuery读取参数名称并填写值。

您要找的是这个

$.each(data, function (index, element) {
var name = element.name;
var key = element.key;

关于javascript - 为什么我的 ajax GET 数据会生成一个奇怪的 JSON 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21207880/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com