2

从 ASP.NET 3.5 开始,来自 ASP.NET Web 服务的所有 AJAX 响应都包含在一个d对象中。

通过 ASP.NET 3.5 中的 ASP.NET AJAX 扩展序列化的所有 ASMX 服务 JSON 都是这种情况。即使您只返回一个标量返回值,例如字符串、整数或布尔值,结果也将始终包含在“d”中。

http://encosia.com/a-break-change-between-versions-of-aspnet-ajax/

因此,对于 3.5 之前的应用程序,您需要执行以下操作:

success(data)
{
   var value = data;
}

使用 3.5+,您必须执行以下操作:

success(data)
{
   var value = data.d;
}

我有一个在 3.5 后和 3.5 前运行的应用程序。

如何使这些应用程序的代码保持一致?

这也很有用,这样我就不必在升级 3.5 之前的应用程序时更改它们的代码。

4

1 回答 1

1

你可以有一个小助手功能:

function GiveMeMyDamnData(data){
   if(data.d)
      return data.d;
   return data;
}

然后...

success(data)
{
   var value = GiveMeMyDamnData(data);
}

...只需要确保您从不在 AJAX 响应中使用“d”属性(否则会让人感到困惑!

于 2012-04-04T12:34:39.890 回答