2

ASP.NET 3.5 では、ASP.NET Web サービスからのすべての AJAX 応答がオブジェクト内に含まれていdます。

これは、ASP.NET 3.5 の ASP.NET AJAX 拡張によってシリアル化されたすべての ASMX サービスの JSON に当てはまります。string、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 より前のアプリケーションをアップグレードするときにコードを変更する必要がないように便利です。

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 に答える