Visual Studio 2010 で 2 つのプロジェクトを作成しました。1 つは Web サービスで、もう 1 つは Web アプリケーションです。Web サービスには次のようなメソッドがあります。
`[OperationContract]
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "json/getData")]
List<Objects> TestCall();`
サービスを実行したら、URL を入力して JSON 応答を取得できます。
http://localhost:17258/RestService.svc/json/getData
結果は
{"TestCallResult":[{"id":1,"name":"Title"},
{"id":2,"name":"Title"},{"id":3,"name":"Title"},{"id":4,"name":"Title"}]}
ただし、私の Web アプリケーションでは、この Ajax 呼び出しを行ってこの応答を取得しようとすると、呼び出しは成功しますが、JSON は null です。これが私の ajax 呼び出しです。
`$.ajax({
url: "http://localhost:17258/RestService.svc/json/getData",
type: "GET",
mimeType: "application/json",
dataType: "json",
cache: false,
success: function (json, status) {
alert("Success JSON=" + json + ", status=" + status);
var obj = jQuery.parseJSON(json);
for (var i = 0; i <= obj.length; i++) {
alert(obj[i].id);
}
}
});`
FireFox で試していますが、json 変数が null として返されます。IE デバッガーでデバッグすると、オブジェクトにウォッチを追加でき、オブジェクトの下に配列があることがわかります。代わりに json.TestCallResult を使用する必要がありますか?他の誰かが IE と FireFox のこの違いを見た、または誰かが初心者であることをやめてこれを行うと言うことができます...
ありがとう