【问题标题】:JSON response doesn't contain "d" Anymore!!! asp.net 4.5JSON 响应不再包含“d”!!! ASP.NET 4.5
【发布时间】:2013-08-19 07:59:46
【问题描述】:

我有一个问题,我们正在将 asp.net 3.5 转换为 asp.net 4.5 在此期间 - 我们遇到了很多问题 但现在......我们终于得到了它太加载了 现在我在来自服务的 JSON 响应中有奇怪的行为 它们不再包含“d”!

{d: "response from server"}

现在

{"response from server"}

这会破坏用于回调的 javascript 代码有什么想法吗?或解释

【问题讨论】:

  • 您能否提供一个重现此行为的示例应用程序?这种行为不应该在 3.5 和 4.5 之间发生变化,而且我无法在自己的机器上重现它。
  • 这里是 4.5 解决方案 - 你会看到那里没有 result.d。你可以在这里下载它sdrv.ms/19z7O3q
  • 这种行为在我们的机器上似乎仍然是正确的。 (MS AJAX 在调用回调之前总是解开“d”参数。)当您从 3.5 升级到 4.5 时,项目中是否还有其他变化?例如,您是否依赖于新的 JavaScript 库或现有库的不同版本?

标签: c# asp.net json scriptservice


【解决方案1】:

如果要在返回结果时为变量命名,则需要对其进行正确的序列化。

如果您返回一个字符串,您将获得 {"your string"} 但如果您返回一个对象(或在 4.5 中为动态类型的任务或更好的“您的对象”类型的任务),您将获得完全序列化的对象

return new { 
   result = "here is your result", 
   code  = "here is your code"
}

【讨论】:

  • OP 不询问如何序列化。他/她正在询问改变的行为。
【解决方案2】:

行为发生了变化,因为 Microsoft 从使用 DataContractJsonSerializer 切换到 Json.NET (NewtonSoft)。

【讨论】:

  • 不,我在 asp.net 4.5 中使用 Asp.net Ajax。我想知道它的行为从早期版本 3.5 发生变化的原因
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-01
  • 2013-11-26
  • 2014-10-07
  • 1970-01-01
  • 1970-01-01
  • 2013-10-09
  • 1970-01-01
相关资源
最近更新 更多