【发布时间】:2010-04-13 19:46:28
【问题描述】:
我正在调用 Web 服务并以 JSON 格式返回以下数据:
[{"OrderNumber":"12345","CustomerId":"555"}]
在我的网络服务成功方法中,我试图解析两者:
$.ajax({
type: "POST",
url: "MyService.asmx/ServiceName",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
var data = msg.d;
var rtn = "";
$.each(data, function(list) {
rtn = rtn + this.OrderNumber + ", " + this.CustomerId + "<br/>";
});
rtn = rtn + "<br/>" + data;
$("#test").html(rtn);
}
});
但我得到了一堆“未定义,未定义”的行,后跟正确的 JSON 字符串。知道为什么吗?我已经尝试使用 eval() 方法,但这并没有帮助,因为我收到了一些错误消息,说预期会出现 ']'。
【问题讨论】:
-
我已经删除了部分响应,因为它返回的记录数组的字段比我上面列出的要多。
-
如果我运行以下命令而不是 var data = msg.d: var data = eval("(" + msg + ")");我明白了: Line: 21 Error: Expected ']'
-
如果你使用你目前所拥有的但使用
var data = msg;(取出.d)会发生什么? -
如果我这样做,我只会得到一个 undefined。
-
@Jayson N. Gaylord:
eval("(" + msg + ")");将把msg变成一个字符串(因为你要连接它),然后评估结果。因为msg是一个对象,所以var a = "(" + msg + ")"将为您提供a的以下值:"([object Object])"。所以实际上,你正在做eval("([object Object])"),这显然是行不通的。只是为了澄清一下=)我相信我已经在我的其他 cmets 中说了关于此事的所有其他内容。
标签: jquery web-services json serialization