2009-05-17 3 views
1

Ich möchte einen Web-Service mit jquery Get-Funktion verbrauchen. Es gibt keine Ebene dazwischen, da die Javascript-Dateien auf demselben Server liegen, auf dem der Web-Service läuft.Force ie7 zu nehmen jquery.get Antwort als XML trotz falscher Header

Mein Code läuft gut in Firefox, aber in ie7 das Problem auftreten. Ich bin mir ziemlich sicher, dass ich die Antwort kenne: Xml Header sagt "Text/HTML", und IE7 glaubt leider, dass es wahr ist.

Also, was kann ich tun, um IE zu helfen, meine XML-Antwort als XML zu verstehen? umwandeln/analysieren?

XML:

<?xml version = "1.0" encoding = "UTF-8"?> 
<find> 
<set_number>005262</set_number> 
<no_records>000005611</no_records> 
<no_entries>000005611</no_entries> 
<session-id>YGSNPECRDEJS4Y3U1A65HMTG9PYPI1UDY1PYNFN2RK4BCDGY2D</session-id> 
</find> 

-Code (vereinfacht, die append-Sachen in einer separaten Funktion nimmt):

$(document).ready(
    function(){  
     $.get(
      "http://server/X?op=find&code=wru&request=arbetsliv&base=rik01", 
      function(data){ 
       $("#wru").append($('no_records',data).text()); 
      },"xml" 
    ); 
});   

Antwort

2

ich vor, mit diesem Problem beschäftigt haben. Die einzige Lösung, die ich gefunden habe, war, einen manuellen Ajax-Aufruf durchzuführen, den Antworttext zu nehmen, ihn als DOM-Dokument zu analysieren und dann zu verwenden.

+0

wie manuell? ganz ohne jquery? oder mit jquery.ajax()? – Fontanka16

+1

Ich musste es zu der Zeit manuell tun, aber ich denke, dass jQuery jetzt eine Option hat, um einen Mime-Typ auf die Antwort zu erzwingen. Sehen Sie sich die Option 'dataType' im Optionsparameter von jQuery.ajax an. http://docs.jquery.com/Ajax/jQuery.ajax#options –

+0

Ich habe die Informationen hier verwendet: http://docs.jquery.com/Specifying_the_Data_Type_for_AJAX_Requests. – Fontanka16

1

Meine Lösung:

$(document).ready(function(){ 
    $.ajax({ 
     url: "http://server/X?op=find&code=wru&request=biografier&base=rik01", 
     success: function(data){ 
      var xml; 
      if ($.browser.msie && typeof data == "string") { 
       xml = new ActiveXObject("Microsoft.XMLDOM"); 
       xml.async = false; 
       xml.loadXML(data);     
      } else { 
       xml = data; 
      } 
      $("#wsa").append($('no_records',xml).text()); 
     } 
    }); 
}); 
+1

Nur ein Hinweis: '$ .browser' wurde aus jQuery entfernt, seit diese Antwort geschrieben wurde. – Brad

1

Der einfachste Weg, um dieses, das ich gefunden habe, ist einfach das Ergebnis zu konvertieren, wenn nötig.

$.get(
    // all your parameters here 
).done(function (data) { 
    if (typeof data === 'string') { 
     data = jQuery.parseXML(data); 
    } 
    // data is now a Document for you to use here 
});