2010-12-29 6 views
6

jQuery 1.4.2 kullanıyorum ve basit bir AJAX isteği gerçekleştirmeye çalışıyorum. Hedef URL bir JSON dizgisi döndürür (jslint ile doğruladım). İstek Firefox ve Chrome'da çalışıyor, ancak IE8'de çalışmak istemiyor ve nedenini belirleyemiyorum. İşte şu çağrıyı yaparsınız: IE, beforeSend geri arama ve hata geri çağırma işlemini yürütecektir. iletiyle hata geri arama uyarıları: Content-Type: text/javascript; charset=UTF-8 ilejQuery AJAX, IE8'de "Hata: Bu yöntem, açık yöntem çağrılana kadar çağrılmaz."

Error: This method cannot be called until the open method has been called. 

My yanıt başlığını döner.

IE ile neler oluyor? Sunucuyu localhost üzerinde çalıştırıyorum, http://localhost:8080/psx'dan http://localhost:8080/helper'a bir istekte bulunarak. Belki IE bu isteği engelliyor mu? İstek trafiğini analiz etmek için Fiddler'ı yüklemeyi denedim, ancak makinemde çalışmayacak çünkü kilitleniyor. Firebug izin veriyor, ama her şey orada iyi görünüyor.

Yardımlarınız için teşekkürler!

+0

deneyin zaman uyumsuz 'ayarı. –

+0

Maalesef bu bir etkisi olmadı. Ayrıca, hata geri arama durumunun boş olduğunu da belirtmeliyim. – checker

cevap

14

Tamam, işte düzeltme! İstek, herhangi bir nedenle IE8'de düzgün olmayan window.XMLHttpRequest() kullanıyordu. jQuery gerektiği gibi window.ActiveXObject("Microsoft.XMLHTTP") geri başarısız değildir.

AJAX çağrısı önce bir yerde Betiğinize bu ekleyin (sadece IE8 değil diğer IE en doğrulandı):

  1. jQuery 1.4 olarak güncellendi:

    jQuery.ajaxSetup({ 
          xhr: function() { 
            //return new window.XMLHttpRequest(); 
            try{ 
             if(window.ActiveXObject) 
              return new window.ActiveXObject("Microsoft.XMLHTTP"); 
            } catch(e) { } 
    
            return new window.XMLHttpRequest(); 
           } 
         }); 
    

    İşte çözüm geldi nasıl .4 sorunun, düzeltilmiş bir hata olması durumunda.

  2. Sonuçlar, sonuçlar farklı bir şekilde ortaya çıkana kadar Firebug hata ayıklayıcısı ve DevTools hata ayıklayıcısını aştı.
  3. 5899 numaralı satırda, ajax() işlevi, xhr() işleviyle XmlHttpRequest nesnesini oluşturur. Firefox'ta iyi bir veri döndü. IE, bu ben googled hattı 5749 tarihinde bu işlevi, return new window.XMLHttpRequest();
  4. analiz ve aynı sorun var bu page geldi ve benim için çalışıyor çözüm önerdi tüm alanlar
  5. Error: This method cannot be called until the open method has been called. olmak dönen oldu.
  6. Official jQuery ticket: FALSE ve tekrar denemek: