0

Webmethod はオブジェクトの配列を返します - このようなもの

{"d":
[[{"Amount":100,"Name":"StackOverflow"},
{"Amount":200,"Name":"Badges"},
{"Amount":300,"Name":"Questions"}]]}

クライアント側では、JSON が msg.d を使用して参照されると、

msg.d is undefined 

エラー。jQuery JavaScript Library v1.4.2 を使用しています

オブジェクトの配列の要素にアクセスするにはどうすればよいですか?


さらに調査結果、コード、および質問を追加します。

  1. 返される JSON オブジェクトに __type が表示されません。サーバーから送信されたオブジェクトが JSON 形式ではないということですか?
  2. __type が応答の一部でない場合、msg.d を使用できませんか? (msg.dは未定義)

さらに: 1. msg[0][0].Amount を使用してクライアント側から要素にアクセスできます。(サーバーから) 戻りオブジェクトを具体的に JSON 形式にするにはどうすればよいですか?


PageMethods へのコード呼び出し

PageMethods.BuildParticipantAsync($get('<%=hdn_AjaxControls.ClientID %>').value, fOnSuccess, fOnFailure);

function onSuccess(msg)
{
alert(msg.d); //This is undefined
}

Web Method
public static object[] BuildParticipantAsync(string lstSAjaxControls)
{
...//do stuff
 return new object[] { ArrayOfObject };
}
4

1 に答える 1

0

みんな、これが私が見つけたものです。なぜなら、クラスの複合オブジェクトではなく、object[] を返しているからです。msg.d[0].Amount を使用して参照することはできません (できると思っていたので)。msg[0][0].Amount を使用する必要があります - ある意味では、それは非常に理にかなっているようです。

于 2010-04-21T17:13:02.860 に答える