2010-04-26 7 views
11

Otrzymuję ten nieco tajemniczy komunikat o błędzie:Błąd JQuery: Filtr XML jest stosowany do wartości innej niż XML (funkcja (E, F) {return new (o.fn.init) (E, F);})

filtr XML jest stosowana do wartości nie XML (funkcja (e, f) {powrotu nowego (o.fn.init) (E, F);})

gdy ten fragment kodu

function justDoIt(arg){ 
    msg = arg.msg; 
    if(arg.ok) 
     jQuery.(".action-button").each(function(idx,el){jQuery(this).removeClass('enabled');}); 
} 

arg to odpowiedź formatu JSON z serwera.

Ktoś wie, jak to naprawić?

Odpowiedz

19

Na 4 linii istnieje . po jQuery które należy usunąć:

if(arg.ok) { 
    $('.action-button').each(function() { 
     $(this).removeClass('enabled'); 
    }); 
} 

Jakie mogą być uproszczone do:

if(arg.ok) { 
    $('.action-button').removeClass('enabled'); 
} 
+0

Tak, właśnie zauważyłem dodatkową kropkę (nie wiem o czym, do diabła, myślałem!). Dzięki za uproszczony kod też. Im więcej dowiaduję się o jQuery, tym bardziej go uwielbiam! – morpheous

+0

Nie dotyczy to tylko jQuery. Znalazłem ten wątek szukający tego samego błędu msg, kiedy mój (nie-jQuery) kod zawierał jakiś Var.join. ('') - zanotuj okres bezpańskie przed otwarciem. – enigment

0

Zdarza mi się też. Otrzymuję ten błąd podczas wywoływania funkcji o ró? Nych okna:

function anyFunction() { 
    popup=window.open("..."); 
    popup.someFunction(...); 
} 

Kiedy I wykonanie kodu otrzymuję komunikat o błędzie: „Błąd: filtr xml jest stosowana do wartości non-xml”. Rozwiązałem problem w następujący sposób:

function anyFunction() { 

    popup=window.open("..."); 

    if(popup.someFunction) { 
     popup.someFunction(...); 
    } else { 
     setTimeout("anyFunction()", 1000); 
    } 
} 

Następnie funkcja w popup jest wywoływana tylko wtedy, gdy jest znaleziona przez otwieracz.

+2

Użyj jquery 'ready()' zamiast timeout. Jeśli 1000 nie jest wystarczająco dużo czasu, aby załadować, jesteś hosed. –