我已通过网络服务将一些JSON传递到我的页面。我使用JSON.NET将XML转换为JSON。 JSON输出对我来说没问题,但我无法访问响应中的某些项目。我不确定为什么它不起作用。我正在使用jQuery来读取响应并进行webservice调用。即使我试图读取数组的长度,它也会显示为“未定义”
function GetFeed(){
document.getElementById("marq").innerHTML = '';
$.ajax({
type: "POST",
url: "ticker.asmx/GetStockTicker",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(response) {
var obj = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d;
for (var i = 0; i < obj.length; i++) {
$('#marq').html(obj[i].person);
}
}
});
}
这是我在firebug中出现的回复的复制和粘贴:
{"d":"{\"?xml\":{\"@version\":\"1.0\",\"@standalone\":\"no\"},\"root\":{\"person\":[{\"@id\":\"1\",\"name\":\"Alan\",\"url\":\"http://www.google.com\"},{\"@id\":\"2\",\"name\":\"Louis\",\"url\":\"http://www.yahoo.com\"}]}}"}
答案 0 :(得分:2)
你应该能够在不调用三元运算符的情况下读取响应...无论如何,如果你试图迭代人员数组,你应该以response.d.root.person对象为目标,而不是它的父对象:
for (var i = 0; i < response.d.root.person.length; i++) {
$('#marq').html(d.root.person[i].name //.url, ...);
}
答案 1 :(得分:0)
我知道Jquery的Ajax完成有问题,它在请求完成时总是被调用两次。我不确定这是否成功。