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

时间:2012-03-27 13:38:47

标签: jquery ajax internet-explorer rest content-type

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

我们正在尝试点击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
    });
}

2 个答案:

答案 0 :(得分:10)

只需将内容类型作为参数之一传递给.ajax方法:

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

答案 1 :(得分:2)

是的,您可以使用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"}