如何在所有.NET框架中获得一致的AJAX响应?

时间:2012-04-04 12:29:28

标签: asp.net ajax asp.net-3.5

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

  

所有ASMX服务JSON都是通过序列化的情况   ASP.NET 3.5中的ASP.NET AJAX扩展。即使你只是回来了   标量返回值,例如字符串,int或boolean,结果   将始终包含在“d”中。

http://encosia.com/a-breaking-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之前的应用程序中的代码。

1 个答案:

答案 0 :(得分:1)

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

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

...然后

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

...只需要确保你永远不要使用' d' AJAX响应中的属性(否则会让人感到困惑!