Set AJAX content type header in request from IE

44,610

Solution 1

Just pass the content-type as one of your parameters to the .ajax method:

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

Solution 2

Yes, you could use the contentType parameter:

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

    }
});

Request sent:

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"}
Share:
44,610
KodeKreachor
Author by

KodeKreachor

I make stuff sometimes

Updated on July 18, 2022

Comments

  • KodeKreachor
    KodeKreachor almost 2 years

    Is it possible to set the http content-type request header to 'application/json' when sending a cross domain jquery ajax http request from Internet Explorer?

    We're trying to hit a REST WCF service that interprets the content type from the request header when formatting the response. Right now, no matter what we put in the request header it is always returning the data in XML format.

    We've tried using the jquery.iecors.js plugin which extends the jquery ajax call to use the XDomainRequest object but that is still ignoring the content-type that is set in our jquery ajax call.

    Here's what our ajax call looks like:

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