2014-09-16 2 views
0

У меня возникли проблемы с кодом ниже. Он не будет работать в IE9. Тем не менее, он отлично работает в других браузерах. Я поставил предупреждение внутри кода, но этот фрагмент кода не был достигнут. Кто-нибудь знает, как решить эту проблему?jquery ajax call не работает в IE9

NWF$.ajax({ 
url: 'http://pdfservice/training/', 
data: JSON.stringify(dataJSON), 
contentType: 'application/json; charset=utf-8', 
dataType: 'json', 
type: 'POST', 
cache: false, 
success: function (fileName) { 
    alert('ok!'); 
      window.location.href = 'http://pdfservice/training/?meeting=' + fileName; 
}, 
error: function (result) { 
alert(JSON.stringify(result)); 
     } 
}); 

Я просто изменил не ошибка, и это ошибка, что я получаю:

{"readyState":0,"status":0,"statusText":"No Transport"} 
+0

Вы получаете исключение внутри вашей консоли? – KoenW

+0

Какая версия jquery? – SSA

+0

Это jquery, используемый Nintex, и я думаю, что он использует версию jQuery 1.10.1. –

ответ

0

Это происходит потому, что ваши данные в формате JSON поврежден.

Исправьте данные JSON, вы можете использовать JSONLint, чтобы проверить свой ответ JSON, чтобы убедиться, что он действителен JSON.

1

Jquery w Ajax для IE9 не работает.

Это поддерживается через jquery plugin

"Реализует автоматическую поддержку Cross Origin Resource Sharing, используя XDomainRequest объект для IE8 и IE9 при использовании функции $ .ajax в JQuery 1.5+."

+0

Я включил jquery.xdomainrequest.min.js на свою страницу, но он все еще не работает. –

0

Старый пост, понял, я хотел бы добавить мои выводы из AJAX POST request on IE fails with error "No Transport"?

Я добавляю код в случае, если он будет удален:

if (!jQuery.support.cors && window.XDomainRequest) { 
    var httpRegEx = /^https?:\/\//i; 
    var getOrPostRegEx = /^get|post$/i; 
    var sameSchemeRegEx = new RegExp('^'+location.protocol, 'i'); 
    var xmlRegEx = /\/xml/i; 

    // ajaxTransport exists in jQuery 1.5+ 
    jQuery.ajaxTransport('text html xml json', function(options, userOptions, jqXHR){ 
     // XDomainRequests must be: asynchronous, GET or POST methods, HTTP or HTTPS protocol, and same scheme as calling page 
     if (options.crossDomain && options.async && getOrPostRegEx.test(options.type) && httpRegEx.test(userOptions.url) && sameSchemeRegEx.test(userOptions.url)) { 
      var xdr = null; 
      var userType = (userOptions.dataType||'').toLowerCase(); 
      return { 
       send: function(headers, complete){ 
        xdr = new XDomainRequest(); 
        if (/^\d+$/.test(userOptions.timeout)) { 
         xdr.timeout = userOptions.timeout; 
        } 
        xdr.ontimeout = function(){ 
         complete(500, 'timeout'); 
        }; 
        xdr.onload = function(){ 
         var allResponseHeaders = 'Content-Length: ' + xdr.responseText.length + '\r\nContent-Type: ' + xdr.contentType; 
         var status = { 
          code: 200, 
          message: 'success' 
         }; 
         var responses = { 
          text: xdr.responseText 
         }; 

           try { 
            if (userType === 'json') { 
             try { 
              responses.json = JSON.parse(xdr.responseText); 
             } catch(e) { 
              status.code = 500; 
              status.message = 'parseerror'; 
              //throw 'Invalid JSON: ' + xdr.responseText; 
             } 
            } else if ((userType === 'xml') || ((userType !== 'text') && xmlRegEx.test(xdr.contentType))) { 
             var doc = new ActiveXObject('Microsoft.XMLDOM'); 
             doc.async = false; 
             try { 
              doc.loadXML(xdr.responseText); 
             } catch(e) { 
              doc = undefined; 
             } 
             if (!doc || !doc.documentElement || doc.getElementsByTagName('parsererror').length) { 
              status.code = 500; 
              status.message = 'parseerror'; 
              throw 'Invalid XML: ' + xdr.responseText; 
             } 
             responses.xml = doc; 
            } 
           } catch(parseMessage) { 
            throw parseMessage; 
           } finally { 
            complete(status.code, status.message, responses, allResponseHeaders); 
           } 
          }; 
          xdr.onerror = function(){ 
           complete(500, 'error', { 
            text: xdr.responseText 
           }); 
          }; 
          xdr.open(options.type, options.url); 
          //xdr.send(userOptions.data); 
          xdr.send(); 
         }, 
         abort: function(){ 
          if (xdr) { 
           xdr.abort(); 
          } 
         } 
        }; 
       } 
      }); 
    }; 

jQuery.support.cors = true; 
Смежные вопросы