2009-05-17 37 views
1

我想要使用jquery的get函數來使用web服務。它們之間沒有層,因爲JavaScript文件與Web服務運行時放在同一臺服務器上。強制ie7將jquery.get響應作爲xml儘管標題錯誤

我的代碼在Firefox中很好運行,但在ie7中出現問題。 我很確定,我知道答案:XML標題指出「文本/ HTML」,不幸的是IE7相信它是真的。

那麼,我能做些什麼來幫助IE瞭解我的XML響應爲XML?投/解析?

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> 

代碼(簡化,追加,東西發生在一個單獨的函數):

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

回答

2

我之前已經處理了這個問題。我發現解決這個問題的唯一方法是做一個手動的ajax調用,獲取響應文本,將它解析爲一個DOM文檔,然後使用它。

+0

怎麼手動?完全沒有jQuery?或與jquery.ajax()? – Fontanka16 2009-05-17 15:28:16

+1

我不得不在手動的時候這樣做,但我認爲jQuery現在有一個選項來強制響應上的MIME類型。看看jQuery.ajax的選項參數上的'dataType'選項。 http://docs.jquery.com/Ajax/jQuery.ajax#options – 2009-05-18 12:16:27

1

我的解決辦法:

$(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

解決這個問題的最簡單的方法我發現是,如果需要簡單地轉換的結果。

$.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 
});