来自Ajax服务的JSON响应

时间:2010-08-04 14:22:57

标签: asp.net-ajax

任何人都可以帮我解决下面的问题。 我正在从java脚本进行ajax Web服务调用,web方法返回自定义对象,对象的序列化为JSON格式由Ajax体系结构处理,并且没有进行任何显式序列化。大多数时候我得到正确的响应,如下所示,这被反序列化并分配给我的ajax回调函数中的变量,这很好。 假设将响应保存为“result”的变量,我可以将结果作为result._type,result.Action访问。

{"__type":"Thomson.Financial.RTThomlets.Ajax.State.AjaxCallResult","Action":"Initialize"} 

如果我关闭所有浏览器并清除缓存并重新打开应用程序,则相同的方法会返回如下响应

{"d":{"__type":"Thomson.Financial.ThinQuotes.Ajax.State.AjaxCallResult","Action":"Initialize"}}

正在自动创建其他对象d,因此d被分配给回调中的变量,所以当我尝试以result._type访问数据时,我得到错误,因为它现在在d对象下。

任何人都可以解释这里出了什么问题。

此致 钱德拉。

2 个答案:

答案 0 :(得分:3)

框架自动添加“d”以处理XSS漏洞。这是一个可以为您解释的链接,http://encosia.com/2009/02/10/a-breaking-change-between-versions-of-aspnet-ajax/

答案 1 :(得分:1)

通常在你的回调中(你使用的是jQuery)第一行是这样的:

function successCallback(result){
   result = result.d;
   //and now you're good to go
}

这应该有助于你使用它,但是,上面给出了你问题的实际答案。