使用此代码:
$("#mybutton").click(function(){
$.ajax({
url: '/Member/GetPinPoints/@Model.Id',
type: "POST",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function(data) {
alert(data);
},
error: function() {
alert("error");
}
});
return false;
});
我收到的JSON对象如下所示:
[{"Position":1,"Top":182,"Left":20,"Height":73,"Width":90},{"Position":2,"Top":69,"Left":103,"Height":98,"Width":1}]
如何迭代这些数据,如果我想提醒每个单独的值?
答案 0 :(得分:4)
普通的旧JavaScript:
for(var i = 0; i < data.length; i++){
for(var key in data[i]){
alert(key + " : " + data[i][key]);
}
}
和jQuery:
$.each(data, function(index, element){
$.each(element, function(key, value){
alert(key + " : " + value);
});
});
您需要迭代嵌套循环,因为您需要遍历数组中的所有元素以及每个数组元素,请遍历所有属性。
答案 1 :(得分:1)
之前的例子可行,但它们很幼稚。不擅长编码的例子只会循环遍历一个不太健壮的数组。
让我们假设您在代码隐藏方法中返回键/值对,并希望能够根据需要选择使用这些数据。你从这开始。
[WebMethod]
public static Dictionary<string, string> EditPromo(int promoId)
{
using (var db = new DataContext())
{
var q = db.Promos.Where(x => x.promoID == promoId).Select(x => x).Single();
return new Dictionary<string, string>()
{
{"code", q.code},
{"label", q.label},
{"expiredate", string.Format("{0:M/d/yyyy}", q.expireDate)}
};
}
}
现在我们可以通过jQuery Ajax访问它,如下所示:
$.ajax({
url: "/Manager/mPromo/Promo.aspx/EditPromo",
context: $("#editPromo"),
data: "{promoId:'" + promoid + "'}",
success: function (msg)
{
var resp = msg.d;
$("h1:first", this).text("Edit " + resp.code);
$("input#txtDate", this).val(resp.expiredate);
}
});
注意我是如何创建一个变量来保存msg.d,称为resp。然后我可以使用resp.ReturnedDictionaryKey。上面我用过的代码和expiredate。我可以随意使用它们。
答案 2 :(得分:0)
试试这个。
$("#mybutton").click(function(){
$.ajax({
url: '/Member/GetPinPoints/@Model.Id',
type: "POST",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function(data) {
//asp.net 3.5 plus wraps the return into a .d property
var msg = data.hasOwnProperty("d") ? data.d : data;
for(var i=0; i < msg.length; i++){
alert(msg[i].Position);
}
},
error: function() {
alert("error");
}
});
return false;
});
答案 3 :(得分:-1)
如果这样可以更容易使用,您还可以pass it back into a JavaScript array。尽管JavaScript数组不能将键,对象和数组放在一起,但它的行为有点像关联数组。