任何人都可以帮我解决下面的问题。 我正在从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对象下。
任何人都可以解释这里出了什么问题。
此致 钱德拉。
答案 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
}
这应该有助于你使用它,但是,上面给出了你问题的实际答案。