我如何用jquery读取简单的json结果以及如何发布新的

时间:2012-07-25 10:03:06

标签: javascript jquery json wcf

我构建了一个生成JSON的WCF服务。我想创建一个使用此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?

-edit - :

我现在已经更新了我的代码并将其放入我的文档就绪函数中,该函数位于<head> <script> ....在我的页面上:

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

但是这不会给出警告结果。它甚至没有发出警报。除此之外,在函数中我需要给出一个id的参数,所以例如123(看上面的文字)不要我把它放在函数中也?

4 个答案:

答案 0 :(得分:2)

要获取数据getJSON()

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

要发布数据,您可以使用this

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

this(如果您需要更多控制权):

$.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 developer tools

答案 1 :(得分:1)

为了使用Jquery从您网站外的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');
                        }
                    });

当您想使用Javascript执行跨域调用时使用JSONP。

此外,您的WCF服务应该兼容处理JSONP调用,方法是使用URL中指定的callBack方法将结果注入响应流。

答案 2 :(得分:0)

你有这样的代码吗?

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

记住getJSON不会立即返回数据,你必须在回调函数中使用结果。

答案 3 :(得分:0)

为什么要更改网址?

$。的getJSON(            't t p://myownaddress/blabla.svc'==&gt; 't t p://myownaddress/blabla.svc/123',             功能(数据)             {                警报(data.JSONDataResult);             });