0

JSONを生成するWCFサービスを構築しました。このWebサービスを利用した外部Webサイトを作りたい。今のところ、IISによってLAN経由でWCFサービスを実行しているので、http://myownaddress/blabla.svc/にアクセスしてサービスに接続できます。

私はいくつかのjsonを学び、私のサービスからいくつかの結果を得ようとしました。

たとえば、この方法を使用する場合:

        [OperationContract]
        [WebInvoke(Method = "GET",
            ResponseFormat = WebMessageFormat.Json,
            BodyStyle = WebMessageBodyStyle.Wrapped,
            UriTemplate = "json/{id}")]
        string JSONData(string id);

http://myownaddress/blabla.svc/json/123にアクセスする と、次のようになります。{"JSONDataResult":"製品123をリクエストしました"}

今、私はJQueryステートメントgetJSONでこの結果を受け取ろうとしました。しかし、結果は見当たりません。

私の質問は、この単純なデータをどのように取得できるかということです。

次に、データを(javascriptを使用して)wcfサービスにポストバックするにはどうすればよいですか?jsonでも可能ですか?

-編集-:

<head> <script>これでコードが更新され、これを私のページの....の間にあるドキュメントレディ関数に配置しました。

$.getJSON(
           'http://myownaddress/blabla.svc',
            function(data) 
            {
               alert(data.JSONDataResult);
            });

しかし、これは結果とともにアラートを出しません。アラートも出ません。それに加えて、関数ではidのパラメーターを指定する必要があるので、たとえば123(上記のテキストを参照)も関数に入れる必要はありませんか?

4

4 に答える 4

2

データを取得するにはgetJSON()

$.getJSON(
    'http://myownaddress/blabla.svc/',
    function(data) {
        alert(data.JSONDataResult);
    }
);

データを投稿するには、これを使用できます

$.post('http://myownaddress/postservice.svc', function(data) {
  $('.result').html(data);
});

またはこれ(より詳細な制御が必要な場合):

$.ajax({
  type: 'POST',
  url: url,
  data: data,
  success: success,
  dataType: dataType
});

メソッドの代わりにajaxを使用してデータを取得することもできますgetJSON

アップデート:

より詳細な制御が可能になるため、ajaxメソッドを使用してみてください。

 $.ajax({
      type: 'GET',
      url: "http://myownaddress/blabla.svc/json/123",
      success: function(data){alert(data)},
      dataType: "json",
      complete: function(data){alert(data)},
      error: function(jqXHR, textStatus, errorThrown){alert(errorThrown)}
    });

また、firefoxを使用している場合は、firebug拡張機能を確認してください。非常に役立ちます。chromeを使用する場合は、chrome開発ツールを使用してください。

于 2012-07-25T10:12:59.577 に答える
1

Jqueryを使用してWebサイトの外部にあるWCFサービスからjsonデータを取得するには、JSONPを使用する必要があります。

以下に示すように、呼び出しを実行できます。

$.ajax({
                        url: "http://myownaddress/blabla.svc/",
                        dataType: "jsonp",
                        type: "GET",
                        timeout: 10000,
                        data: null,
                        jsonpCallback: "MyCallback",
                        success: function (data, textStatus, jqXHR) {                           
                            alert(action.toLowerCase());
                        },
                        error: function (jqXHR, textStatus, errorThrown) {alert('error is:' + errorThrown);
                        },
                        complete: function (jqXHR, textStatus) {alert('complete');
                        }
                    });

JSONPは、Javascriptを使用してクロスドメイン呼び出しを実行する場合に使用されます。

また、WCFサービスは、URLで指定されたcallBackメソッドを使用して結果を応答ストリームに挿入することにより、JSONP呼び出しを処理するための互換性を備えている必要があります。

于 2012-07-25T15:21:20.010 に答える
0

このようなコードはありますか?

$.getJSON(
    'http://myownaddress/blabla.svc/',
    function(result) {
        alert(result.JSONDataResult);
    }
);

getJSONデータがすぐに返されるわけではないことを忘れないでください。コールバック関数で結果を利用する必要があります。

于 2012-07-25T10:07:35.493 に答える
0

なぜURLを変更したのですか?

$ .getJSON('http://myownaddress/blabla.svc' ==>'http://myownaddress/blabla.svc/123'、function(data){alert(data.JSONDataResult);});

于 2012-07-25T11:23:15.817 に答える