资源解释为脚本,但使用MIME类型text / xml进行传输

时间:2012-06-15 11:00:04

标签: ajax web-services

在VS 2010中,我有两个项目,一个用于webservice,另一个用于asp.net页面。

我尝试调用web服务(来自asp.net页面的.js),如下所示:

var host =  "localhost:15932";

var url = "http://" + host + "/MyWebService.asmx/GetFeed?callback=?";


$.ajax({
    async: true,
    type: 'Get',
    url: url,
    data:{ CountryId: CountryId, FeedDateString: FeedDateString, Previous: Previous},
     contentType: 'application/json; charset=utf-8',
     //contentType:'text/xml ',
    processData: true,
    dataType: 'jsonp',

    success: function (response) {
        var result= response.d;
    ,
    error: function (request, status, error) {
        alert(request.responseText);
    }
        ,
    failure: function (msg) {
        alert('somethin went wrong' + msg);
    }
});

调用很顺利,但是从webservice返回的结果是xml,chrome显示错误消息:“资源被解释为脚本但是使用MIME类型text / xml传输” 当我在浏览器中输入时,我得到一个xml流:

“HTTP://本地主机:15932 / MyWebService.asmx / GetCountryFeed回调= jsonp1339760946308&安培; CountryId = 1&安培; FeedDateString =安培;上一页=真”

我的webservice方法的代码:

    [WebMethod(Description = "Get feed")]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json,UseHttpGet=true)]
    public List<Feed> GetFeed(int CountryId, string FeedDateString, bool Previous)
    {

        return (new UserFeedManager()).GetFeed(CountryId, FeeDate, Previous);
    }

如何更改以json格式制作response.d?

1 个答案:

答案 0 :(得分:0)

您需要覆盖Web服务响应。

  1. 将GetFeed的返回类型设置为无效。
  2. 序列化列表。
  3. 返回json:         HttpContext.Current.Response.ContentType =&#34; text / javascript&#34 ;;         HttpContext.Current.Response.Write(JSON)         HttpContext.Current.Response.End();
  4. 您可能想要创建一个类来处理您的响应,并传入使用Func函数或Func参数返回json的函数。