2013-07-11 25 views
22

Uczę się AJAX do AJAXify moją stronę. W moim szablonie mam następujący kod JS, aby uzyskać niektóre dane JSON z widoku, a następnie dołączyć dane do elementu div.Uncaught TypeError: nie można odczytać własności „ownerDocument” o nieokreślonej

function filter(type) { 
    $.getJSON(
    '/activity_stream/global-activity-stream/', 
    {xhr: "true", filter: type}, 
    function(data) { 
     $('.mainContent').children().remove(); 
     $(data).appendTo('.mainContent'); 
    }); 
    } 

    $(".btn").click(function() { 
    filter("recent"); 
    }); 
} 

myślę, że mój pogląd jest powrót prawidłowego JSON, ale teraz dane nie są dodawane do .mainContent div.

Daje ten błąd:

Uncaught TypeError: Cannot read property 'ownerDocument' of undefined.

+2

Jeśli otrzymujesz JSON z powrotem, a potem po prostu dodanie go do DOM nie będzie działać. Czego oczekujesz? – Pointy

+0

Chyba oczekiwałem, że załaduje dane do div ... Jak mogę to osiągnąć? Jestem nowy w tym materiale AJAXy ... – Denny

+2

Po prostu zmień '$ ('. MainContent'). Children(). Remove(); $ (dane) .appendTo ('. mainContent'); 'to' $ ('. mainContent'). html (dane); 'Problem polega na tym, że gdy robisz' appendTo', jquery oczekuje na '$ (dane)' być węzeł DOM, który jest bardzo prawdopodobne, nie w tym przypadku – karthikr

Odpowiedz

26

upewnij się, że przechodząc selektor jQuery, a nie jakąś formę danych:

$('.my-selector') 
nie

:

$([ 'my-data' ]) 
12

I miał podobny problem. Używałem jQuery.map, ale zapomniałem użyć jQuery.map (...). Get() na końcu do pracy z normalną tablicą.

0

Ten sam problem pojawił się w mnie pod numerem $elms.each().

Ponieważ:

  1. funkcja przekazać do .each(Function) expose (co najmniej) dwóch argumentów; pierwszy jest indeks, a drugi będąc elementem bieżącego elementu na liście, a
  2. ponieważ inne podobne metody wykorzystaniem pętli podać aktualny element w tablicy przed indeksu

może ulec pokusie, aby zrobić to:

$elms.each((item) => $(item).addClass('wrong')); 

Kiedy jest to, czego potrzebujesz:

$elms.each((index, item) => $(item).addClass('wrong')); 
Powiązane problemy