ASP.NET WebMethod将对象作为json返回,但不在响应方法中

时间:2013-03-08 18:37:01

标签: javascript ajax json

我有一个简单的网络方法:

<WebMethod(Description:="Does something.")> _
<ScriptMethod(ResponseFormat:=ResponseFormat.Json)> _
Public Shared Function ReturnJSONData() As Person
    Dim guy As New Person
    guy.Name = "Joe"
    guy.Age = 8
    Return guy
End Function

这是我调用ajax方法的地方:

 function GetPerson() {
     PageMethods.ReturnJSONData(OnWSRequestComplete1);
 }
 function OnWSRequestComplete1(result) {
     alert(result.d);
 }

当我使用像firebug这样的工具时,我可以看到JSON结果:

{"d":{"__type":"Person","Name":"Joe","Age":8}}

然而,当我调用“alert(result.d)”时,我得到了未定义。我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

当您从WebMethod获得响应时,您需要评估响应,因为它以字符串形式返回。我不愿意在您的代码中使用eval因为安全风险。

如果您正在使用jQuery,可以调用jQuery.parseJSON(result),它将返回您期望的实际Javascript对象。