[英]Javascript/Jquery push json objects into array
我有一个来自 jquery 中的$.post
的 json 对象。 为了循环并存储客户端数据,我想将它添加到一个数组中。 对于返回的每个搜索结果,我想“附加”数组以使其增长。
这是我的json:
{
"companies": [
{
"companyid": "115",
"saved": false,
"orgnumber": "010101010",
"companyname": "TestCompany",
"header": "header info"
},
{
"companyid": "116",
"saved": false,
"orgnumber": "010101010",
"companyname": "TestCompany",
"header": "header info"
} ]
}
到目前为止,这是我想出的数据是从 post ajax 请求返回的 json。 Obj 只是一个包含我在代码中进一步声明的数组的对象。 obj.companies = new Array();
obj.companies.push(data['companies']);
下一部分我需要循环出数组。 试图这样做。
$.each(obj.companies, function(i, item) {
// Does not alert correctly.
alert(item.header);
});
所以我需要将完整的 json 对象推送到数组中。 但是我无法在循环中提醒 item.header,我该如何完成?
编辑:谢谢大家。 对不起,如果我的问题不够详细。 我最终这样做了:
getcompanies: function() {
obj = this;
$.post('api/finder/result.php', {}, function(data) {
$.each(data.companies, function(i, item) {
obj.companies.push(item);
});
obj.loadcompanies();
}, "json");
},
loadcompanies: function() {
$.each(this.companies, function(i, item) {
alert(item.header);
}
}
我相信您的服务器端代码存在问题,该代码负责构建通过 Ajax 返回的 JSON 对象。 正确的 JSON 应如下所示:
{
"companies": [
{
"companyid": "115",
"saved": false,
"orgnumber": "010101010",
"companyname": "TestCompany",
"header": "header info"
},
{
"companyid": "116",
"saved": false,
"orgnumber": "010101010",
"companyname": "TestCompany",
"header": "header info"
}
]
}
请注意,只有一个名为“companies”的键包含一个对象数组。 请更正您的服务器端代码以获得此类有效的 JSON。 您可以使用免费的在线 JSON 验证器工具(例如http://jsonlint.com/)来验证您的 JSON 对象。
现在一旦你从服务器得到这样的响应; 您只需要执行以下步骤即可获取公司数组(以下代码将进入$.post
成功处理程序):
var jsonResp = JSON.parse(postResponse); //postResponse is the success resp of $.post
var companiesArray = jsonResp.companies;
$.each(companiesArray , function (index, valueObj){
var compId = valueObj.companyid;
var isSaved = valueObj.saved;
});
我希望这会对你有所帮助。
如果您想将新公司附加到您的公司数组中,您应该
var json_obj = {
"companies": [
{
"companyid": "115",
"saved": false,
"orgnumber": "010101010",
"companyname": "TestCompany",
"header": "header info"
},
{
"companyid": "116",
"saved": false,
"orgnumber": "010101010",
"companyname": "TestCompany",
"header": "header info"
} ]
};
//adding new company into your companies array
json_obj.companies.push({
"companyid":"117",
"saved" : false,
"orgnumber": "20120313",
"companyname":"anotherCompany",
"header":"another header info"
});
//if you want to loop through your companies list you can:
json_obj.companies.map(function ( obj ){
console.log(obj.companyid);
console.log(obj.companyname);
etc..
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.