0

我正在从我的 javascript ajax 调用中返回一个“Employee”对象。

var xhReq = new XMLHttpRequest();
xhReq.open("POST", "MobileClientService.svc/REST/TestReturnEmployee", false);
xhReq.send(null);

var serverResponse = xhReq.responseText;

返回的是 JSON 数据。我想返回一个具有 Employee 对象结构的对象,以便我可以用 javascript 编写。

var name = serverResponse.Name;

这是可能的还是我唯一的选择来解析返回的 JSON 字符串?不,我不能使用 jquery(它以这种方式返回对象),它必须只是 javascript。

4

1 回答 1

2

responseText当 jQuery需要 JSON 响应时,它会自动将其解析为一个对象。

在 vanilla JS 中,您可以使用以下方式解析它JSON.parse

var response = JSON.parse(xhReq.responseText),
    name = response.Name;

如果您需要与 IE<=7 兼容,还包括此库:Crockford's JSON2


关于eval

也可以使用evalresponseText字符串解析为对象以与 IE<=7 兼容,而无需包含额外的代码,但这eval是邪恶的。

当然,如果您的服务器总是回显格式正确的 JSON,那将不是问题。我个人会避免eval并使用正确的JSON.parse,但是如果您想在eval不包含额外代码的情况下使用 IE<=7 兼容性,您可以按如下方式进行:

var response = eval('(' + xhReq.responseText + ')'),
    name = response.Name;
于 2012-09-28T21:38:20.543 回答