I have the following ajax call which works perfectly in Firefox and Chrome but not IE:
function getAJAXdates( startDate, numberOfNights, opts ) {
var month = startDate.getMonth() + 1;
var day = startDate.getDate();
var year = startDate.getFullYear();
var d = new Date();
var randNum = Math.floor(Math.random()*100000000);
$.ajax({
type : "GET",
dataType : "json",
url : "/availability/ajax/bookings?rand="+randNum,
cache : false,
data : 'month='+month+'&day='+day+'&year='+year+'&nights='+numberOfNights,
contentType : 'application/json; charset=utf8',
success : function(data) {
console.log('@data: '+data);
insertCellData(data, opts, startDate);
},
error:function(xhr, status, errorThrown) {
console.log('@Error: '+errorThrown);
console.log('@Status: '+status);
console.log('@Status Text: '+xhr.statusText);
}
});
}
I know for a fact that all the variables are passing the right content and $.ajax is indeed passing all the paramater/values.
This is what I get on error:
LOG: @Error: undefined LOG: @Status: parsererror LOG: @Status Text: OK
I'm aware of the cache issue on IE and implemented a random paramater to clear it up.
Here is the JSON i get back (i'm able to see it using Charles)
{
"availability":[
{
"inventory_id":"5",
"booking_id":"21",
"start_date":"05-01-2010",
"number_nights":4,
"text":"deFrancisco, Martin - $500.00 ACTIVE",
"type":"BOOKING"
}
]
}
Finally these are the headers that are sent back from the backend:
header('Content-Type: application/json; charset=utf8');
header("Cache-Control: no-cache");
header("Expires: 0");
header('Access-Control-Max-Age: 3628800');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
Any ideas?
I would comment out the contentType and add dataType: "json"
from http://api.jquery.com/jQuery.ajax/
dataType: The type of data that you're expecting back from the server.
contentType: When sending data to the server, use this content-type.
you are specifying that you are sending json, but you are not - maybe this is the issue?
Most of the time IE-specific parse errors are caused by extra commas. For example, [1, 2, 3,]
is valid in FF but not in IE. Anyway, you should paste in the JSON response, it is impossible to tell the problem without that.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With