【问题标题】:JSON response from Ajax service来自 Ajax 服务的 JSON 响应
【发布时间】:2010-08-04 14:22:57
【问题描述】:

任何人都可以在下面的查询中帮助我。 我正在从 java 脚本进行 ajax Web 服务调用,Web 方法返回自定义对象,将对象序列化为 JSON 格式由 Ajax 架构负责,并且没有进行任何显式序列化。大多数时候我得到如下正确的响应,这被反序列化并分配给我的ajax回调函数中的变量,这工作正常。 假设将响应保存为“结果”的变量,我可以以 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 对象下。

谁能解释这里出了什么问题。

问候 钱德拉。

【问题讨论】:

  • 服务器端可能有问题。你能发布网络服务代码吗?

标签: asp.net-ajax


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    通常在您的回调中(您是否使用 jQuery),第一行类似于:

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

    这应该可以帮助您处理它,但是,是的,上面给出了您问题的实际答案。

    【讨论】:

      猜你喜欢
      • 2013-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-10
      • 2013-08-05
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      相关资源
      最近更新 更多