在请求中设置AJAX内容类型头IE

问题描述:

当从Internet Explorer发送跨域jquery ajax http请求时,是否可以将http内容类型请求头设置为'application/json'?在请求中设置AJAX内容类型头IE

我们试图在格式化响应时尝试打开REST WCF服务,该服务从请求头中解释内容类型。现在,无论我们在请求头中放入什么,它总是以XML格式返回数据。

我们尝试过使用jquery.ieco​​rs.js插件,该插件扩展了jquery ajax调用以使用XDomainRequest对象,但仍忽略在我们的jquery ajax调用中设置的内容类型。

这里就是我们的AJAX调用看起来像:

makeGETRequest: function (requestUrl) { 
    return $.ajax({ 
     type: "GET", 
     url: requestUrl, 
     contentType: 'application/json', 
     dataType:'json', 
     cache: false 
    }); 
} 

只需通过内容 - 键入作为您的参数.ajax方法之一:

var retval = jQuery.ajax({ 
    type:'post', 
    url: url, 
    contentType: 'application/json', 
    data: JSON.stringify(data) 
}); 
+0

谢谢你的回答,不幸的是我们仍然从我们的服务调用中取回xml。 – KodeKreachor 2012-03-28 01:31:42

+0

你可以发布你回复的回复吗?特别是响应头和身体的一部分。 – slashingweapon 2012-03-28 03:42:43

+0

您还应该检查您正在与之通话的服务是否配置为使用JSON进行响应。参见[Suhas](http://stackoverflow.com/a/7479418/1292052) – slashingweapon 2012-03-28 05:57:01

是的,你可以使用contentType参数:

$.ajax({ 
    url: '/someurl', 
    type: 'POST', 
    contentType: 'application/json', 
    data: JSON.stringify({ foo: 'bar' }), 
    success: function(result) { 

    } 
}); 

请求发送:

POST /someurl HTTP/1.1 
Host: example.com 
Content-Length: 13 
X-Requested-With: XMLHttpRequest 
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.83 Safari/535.11 
Content-Type: application/json 
Accept: */* 
Accept-Encoding: gzip,deflate,sdch 
Accept-Language: en-US,en;q=0.8 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 

{"foo":"bar"} 
+0

感谢您的回答,不幸的是我们仍然从我们的服务电话中取回xml。 – KodeKreachor 2012-03-28 01:31:10

+0

谢谢你的回答,事实证明我们需要设置'Accept'标题 – KodeKreachor 2012-03-30 04:23:58