3

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 のこの違いを見た、または誰かが初心者であることをやめてこれを行うと言うことができます...

ありがとう

4

4 に答える 4

0

json.dの代わりに見る必要がありますjson

応答データは.dプロパティに含まれ、返されたオブジェクトに直接含まれていません。

これは、ASP.NET3.5以降で発生します。

于 2012-05-03T13:53:44.973 に答える
0

あなたの成功のコールバックでは、すでにjsonオブジェクトを取得しています。これを $.parseJSON で再度解析しようとすると、結果は null になります。http://jsfiddle.net/H4v8G/

于 2012-05-03T13:41:21.190 に答える
0

ajax URL には、html の URL と同じ host:port が必要です。

于 2012-05-03T13:17:30.373 に答える
0
$.ajax({
                url: "http://localhost:17258/RestService.svc/json/getData",
                type: "GET",
                dataType: "json",
                cache: false,
                success: function (obj) {
                    for (var i = 0; i <= obj.length; i++) {
                        alert(obj[i].id);
        }
     }
});

これを試して

于 2012-05-04T07:47:12.007 に答える