从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之前的应用程序中的代码。
答案 0 :(得分:1)
你可以有一个小帮手功能:
function GiveMeMyDamnData(data){
if(data.d)
return data.d;
return data;
}
...然后
success(data)
{
var value = GiveMeMyDamnData(data);
}
...只需要确保你永远不要使用' d' AJAX响应中的属性(否则会让人感到困惑!