json回调错误未被称为wcf jquery

时间:2013-03-23 01:19:12

标签: jquery .net json wcf cordova

我有一个WCF服务:

[ServiceContract]

public interface IMunicipiosService
{
    [OperationContract]
    [WebInvoke(Method = "GET",
        ResponseFormat = WebMessageFormat.Json,
        BodyStyle = WebMessageBodyStyle.Wrapped,
        UriTemplate = "ListaMunicipios")]

    List<ClsListaMunicipios> GetListaMunicipios();
}

它在chrome中返回json(它是JSON还是JSONP?):

{"GetListaMunicipiosResult":[{"MunicipioID":"1","MunicipioNome":"Florianopolis","MunicipioUf":"SC"},{"MunicipioID":"2","MunicipioNome":"Joinville","MunicipioUf":"SC"}]}

我的JS:

$.ajax("http://localhost:56976/MunicipiosService.svc/ListaMunicipios", {

    beforeSend: function (xhr) {
        // $.mobile.showPageLoadingMsg();
        alert('beforeSend');
    },

    complete: function () {
        // $.mobile.hidePageLoadingMsg();
        alert('complete');
    },
    contentType: 'application/json; charset=utf-8',
    dataType: 'jsonp',
    type: 'GET',
    data: {},

    error: function (xhr, ajaxOptions, thrownError) {
        alert('not ok 1 ' + xhr.status);
        alert('not ok 2 ' + xhr.responseText);
        alert('not ok 3 ' + thrownError);
    },
    success: function (data) {
        alert('success');

    }
});

但是我得到了错误:

  

不行1 200

     

不行2未定义

     

不行3错误jQueryXXXXXXXX未被调用

1 个答案:

答案 0 :(得分:1)

由于您可以通过Chrome提出的GET请求获取JSON响应,因此我假设您已正确设置了WCF服务。

你唯一的问题是你的成功回调没有解雇。如果您正在执行跨域请求但只是从WCF方法返回JSON,则会发生这种情况。您需要构建一些内容并将响应流式传输回来。

不要只是简单地返回List<ClsListaMunicipios>,而是考虑在服务方法中执行此操作:

    HttpContext.Current.Response.ClearContent();

    HttpContext.Current.Response.ContentType = "application/json";
    string callback = HttpContext.Current.Request.QueryString["callback"];

    HttpContext.Current.Response.Write(callback + "( " + new JavaScriptSerializer().Serialize(YourListObjectGoesHere)  + " )");
    HttpContext.Current.Response.Flush();
    HttpContext.Current.Response.End();

我使用了你的AJAX调用,随后触发了成功回调。