最近做一个功能.. 需要用到ajax去跨域查询    var url = 'http://172.18.1.77/API/rs/country/list/';
                $.ajax({                    accepts: 'application/json',
                    url: url,
                    dataType: 'jsonp',
                    jsonp: 'callback',
                    contentType: 'application/json',
                    type: 'POST',
                    beforeSend: function (x) {
                        x.setRequestHeader("Content-Type", "application/json; charset=utf-8");
                    },
                    success: function (json) { alert('succ') },
                    error: function (XMLHttpRequest, textStatus, errorThrown) { alert(textStatus) }                })我用这段代码来尝试访问WCF..   访问成功. 但是返回的不是JSON类型 而是XML类型...  我已经对WCF的配置处理过.. WCF是可以输出JSON的. 只要CONTENT-TYPE是:application/json 就可以了..  
但是.. 无论用配置  contentType: 'application/json', 或者是 beforeSend: function (x) {
                        x.setRequestHeader("Content-Type", "application/json; charset=utf-8");
                    },
都不可以设置contentType. 导致无法输出json格式的数据.. 请问各位大侠有没有办法?

解决方案 »

  1.   

    上面代码有误..    type: 'POST',  应该改为  'GET'   不过还是不行
      

  2.   

    FireBug后台把HTTP头截出来看看
      

  3.   

    WCF里面要返回JSON类型的数据需要修改ResponseFormat
    类似这里所写的[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
            public Article AddArticle(Article article)
            {
                article.Title += "(模拟添加)";
                article.Content += "(模拟添加)";
                article.Id = 101;
                return article;
            }
      

  4.   

    WCF返回JSON需要设置ResponseFormat[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
            public Article AddArticle(Article article)
            {
                article.Title += "(模拟添加)";
                article.Content += "(模拟添加)";
                article.Id = 101;
                return article;
            }
      

  5.   


    ResponseFormat 是被设定为根据contentType 来返回的.  由于WCF 不只是这一个项目用. 其它项目有可能需要XML格式的数据 .. 所以基本上不能改WCF上的代码  
      

  6.   

    你从何得知“ResponseFormat 是被设定为根据contentType 来返回的”的?
      

  7.   

    不能改WCF
    那你在客户端都接受XML,使用的时候写个转换函数转换成JSON对象。