1 $.ajaxTransport( function( options, originalOptions, jqXHR ) {
5 send: function( _, completeCallback ) {
6 xdr = new XDomainRequest();
8 xdr.onload = function() {
10 text: xdr.responseText
13 // force status code to 200, XDomainRequest rejects all other successful status codes
14 if (xdr.contentType.match(/\/xml/)){
15 // there is no responseXML in XDomainRequest, so we have to create it manually
16 var dom = new ActiveXObject('Microsoft.XMLDOM');
18 dom.loadXML(xdr.responseText);
21 if($(dom).children('error').length != 0) {
22 var $error = $(dom).find('error');
23 completeCallback(parseInt($error.attr('response_code')), $error.attr('message_key'), responses);
25 completeCallback(200, 'success', responses);
27 } else if (xdr.contentType.match(/\/json/)) {
28 options.dataTypes.push("json");
29 completeCallback(200, 'success', responses);
31 completeCallback(200, 'success', responses);
32 // see bug https://connect.microsoft.com/IE/feedback/ViewFeedback.aspx?FeedbackID=334804
36 xdr.onprogress = function() { };
38 xdr.onerror = xdr.ontimeout = function() {
40 text: xdr.responseText
42 completeCallback(400, 'failed', responses);
45 xdr.open(options.type, options.url);
46 xdr.send(options.data);