2009-05-17 1 views
1

Я хочу использовать веб-службу, используя функцию get jquery. Между ними нет слоя, так как файлы javascript помещаются на тот же сервер, что и веб-служба.Заставьте ie7 взять ответ jquery.get как xml, несмотря на неправильные заголовки

Мой код хорошо работает в firefox, но в ie7 возникает проблема. Я вполне уверен, что знаю ответ: заголовок xml гласит «text/html», а IE7, к сожалению, поверила, что это правда.

Итак, что я могу сделать, чтобы помочь IE понять мой xml-response как 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

Я имел дело с этой проблемой раньше. Единственный способ, которым я решил его решить, - выполнить ручной аякс-вызов, взять текст ответа, проанализировать его как документ DOM, а затем использовать его.

+0

руководство пользователя? полностью без jquery? или с jquery.ajax()? – Fontanka16

+1

В то время мне приходилось делать это вручную, но я думаю, что jQuery теперь имеет возможность принудительно ввести тип ответа на ответ. Взгляните на параметр «dataType» в параметре параметров jQuery.ajax. http://docs.jquery.com/Ajax/jQuery.ajax#options –

+0

Я использовал информацию здесь: http://docs.jquery.com/Specifying_the_Data_Type_for_AJAX_Requests. – Fontanka16

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

Просто примечание: '$ .browser' был удален из jQuery, так как этот ответ был написан. – Brad

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