[英]How can I update a Json Object using jQuery?
大家好,我正在連接這樣的JSON
字符串:
var addresses = "[";
addresses += '{"AddressID":' + adressid + ',"EmailID":' + $('#txtemailData').val() + ',"Hno":' + $('#txthno').val() + ',"StreetName":' + $('#txtstreetname').val() + ',"City":' + $('#txtcity').val() + ',"StateID":' + $('#ddlState').val() + ',"CountryID":' + $('#ddlcountry').val() + ',"Zip":' + $('#txtzip').val() + ',"PhoneNumber":' + $('#txtphonenumber').val() + ',"Fax":' + $('#txtfax').val() + ',"AddressName:' + $('#txtaddresstype').val() + '"},';
該對象如下所示:
[{
"AddressID":2,
"EmailID":akanilkumar443@gmail.com,
"Hno":Hyderabad,
"StreetName":Gachibowli,
"City":Hyderabad,
"StateID":1,
"CountryID":1,
"Zip":040,
"PhoneNumber":8341516166,
"Fax":23123131,
"AddressName:Store Address"},
{
"AddressID":3,
"EmailID":akanilkumar443@gmail.com,
"Hno":aSAs,
"StreetName":asdasdad,
"City":asdasda,
"StateID":1,
"CountryID":1,
"Zip":asdasda,
"PhoneNumber":asdasda,
"Fax":asdasda,
"AddressName:Store Type"
}]
如何根據它的 id 更新 json 對象的這個特定值?
假設我想更改AddressID=2
對象的某些值。 例如,我想更改AddressID=2
的JSON
對象的EmailID
、 Streetname
。 我如何使用 jQuery 做到這一點?
我正在嘗試這樣,但它不會循環,有人可以在這里幫助我嗎?
function EditAddress(addressid) {
alert(addressid);
alert(addresses);
var addressobject =JSON.parse(addresses.substring(0, addresses.length - 1) + ']');
jQuery.each(addressobject, function (i, val) {
alert(val.AddressID);
if (val.AddressID == addressid)
{
//update logic
}
});
}
您可以使用$.each()
函數遍歷數組arr
,然后搜索id
屬性值為2
。 如果找到,則更新對象obj
所需的屬性,然后跳出循環,如:
var arr = [ {"id": 1, "name": "Apple" , "isVisible": false}, {"id": 2, "name": "Orange", "isVisible": false}, {"id": 3, "name": "Banana", "isVisible": false} ] $.each( arr, function( i, obj ) { if(obj.id === 2){ console.log("Current " + obj.id + " = " + obj.isVisible); obj.isVisible = true; console.log("Changed " + obj.id + " = " + obj.isVisible); return false; // Loop will stop running after this } });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
首先不要手動創建字符串。 使用內置功能要健壯得多,所以這樣做:
var addressesAsArray = [],
addressAsObject = {}
address;
//assuming some loop or other
address = {
"AddressID": adressid,
"EmailID":$('#txtemailData').val(),
"Hno":$('#txthno').val(),
"StreetName": $('#txtstreetname').val(),
"City": $('#txtcity').val(),
"StateID": $('#ddlState').val(),
"CountryID": $('#ddlcountry').val(),
"Zip": $('#txtzip').val(),
"PhoneNumber": $('#txtphonenumber').val(),
"Fax": $('#txtfax').val(),
"AddressName": $('#txtaddresstype').val()
};
addressesAsArray.push(address);
addressAsObject[address.AddressID] = address;
如果您需要查找具有給定 ID 的地址,則該方法將取決於您是在addressesAsArray 還是addressesAsObject 中查找。 后者是直接的
address = addressesAsObject[addressIDBeingSought];
在數組情況下,您可以簡單地循環
for(i = 0, len = addressesAsArray.length;i<len; i += 1){
if(addressesAsArray[i].AddressID === addressIDBeingSought) {
address = addressesAsArray[i];
break;
}
}
完成更新后,您可以通過以下方式將其作為 JSON 獲取
json = JSON.stringify(adresses);
使用 linq.js javascript 庫或 jquery 插件: http ://linqjs.codeplex.com/
<!DOCTYPE>
<html>
<head>
<script type="text/javascript" src="linq.js"></script>
</head>
<body>
<script>
var array = [{
AddressID:2,
EmailID:'akanilkumar443@gmail.com',
Hno:'Hyderabad'
},
{
AddressID:3,
EmailID:'akanilkumar443@gmail.com',
Hno:'aSAs'
}];
Enumerable.From(array).Where("$.AddressID == 3").ToArray()[0].Hno= 'ololo';
// or this:
// Enumerable.From(array).Where(function(x){return x.AddressID == 3}).ToArray()[0].Hno= 'ololo';
alert(array[1].Hno)
</script>
</body>
</html>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.