2015-11-07 26 views
7

Quando provo a eseguire una query Ajax con dataType di' text/xml; charset = utf-8 '... Ho un parsererror.La query Ajax funziona con dataType: "testo" non riesce con dataType: 'text/xml; charset = utf-8 '

  1. La risposta XML è valido xml
  2. L'intestazione di risposta mostra un Content-Type di 'text/xml; charset = utf-8 '.
  3. Non è una richiesta di dominio croce

Questi tre problemi erano risposte in altre domande ParserError.

mio ajax assomiglia a questo:

 $('#submitLogin2').click(function (e) { 
      e.preventDefault(); 
      var formData = $('#loginForm2').serialize(); 
      var url = 'http://somewhere.com/Api2.0/Session_Create.aspx'; 
      $.ajax({ 
       url: url, type: "POST", dataType: 'text/xml; charset=utf-8', 
       data: formData, contentType: 'application/x-www-form-urlencoded; charset=UTF-8', 
       success: function (data) { 
        $('#loginResult').html(data.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/ /g, '&nbsp;').replace(/\n/g, '<br />')); 
       }, 
       error: function (textStatus, errorThrown) { 
        alert(errorThrown); 
        alert(JSON.stringify(textStatus)); 
       } 
      }); 
     }); 

e la risposta è:

<Response><Error code='0'>Invalid User Name or Password</Error></Response> 

E 'fantastico che la richiesta di 'testo' funziona ... ma sarebbe bello lasciare l'Ajax analizzare l'xml per me. Qualche idea su come farlo funzionare?

risposta

1

È inoltre necessario analizzare la risposta XML per elaborarlo come stringa con qualcosa come $ .parseXML (dati) o un XMLSerializer:

Cambiare I dati di seguito dovrebbe darvi risultato previsto. Penso che questo sia ancora più importante, quindi la risposta dataType dovrebbe essere determinata automaticamente dal tipo MIME.