2013-07-11 83 views
22

我在教自己的AJAX AJAXify我的網站。在我的模板中,我有以下JS代碼從視圖獲取一些JSON數據,然後將數據附加到div。未捕獲TypeError:無法讀取undefined屬性'ownerDocument'

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

我認爲我的觀點是正確的返回JSON,但現在數據沒有被添加到.mainContent股利。

它給這個錯誤:

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

+2

如果您收到JSON回來,然後就其追加到DOM是行不通的。你期望發生什麼? – Pointy

+0

我想我預計它將數據加載到div中...我如何實現這一目標?剛剛改變了這個AJAXy的東西... – Denny

+2

只需改變'$('。mainContent')。children()。remove(); $(data).appendTo('。mainContent');'to'$('。mainContent')。html(data);'問題是,當你執行'appendTo'時,jquery需要'$(data)'成爲一個DOM節點,它很可能不是在這種情況下 – karthikr

回答

26

確保您選擇傳遞給jQuery的,沒有某種形式的數據:

$('.my-selector') 

不是:

$([ 'my-data' ]) 
12

我有類似的問題。 我正在使用jQuery.map,但我忘了使用jQuery.map(...)。get()在最後使用普通數組。

0

$elms.each()裏面出現了同樣的問題。

因爲:

  1. 傳遞給.each(Function)自曝(至少)兩個參數的函數;第一個是指數,第二個是在列表中的當前元素的元素,並
  2. 因爲其他類似的循環方法給出當前數組中的元素的索引

你可能會做前這樣的:

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

如果這是你需要的東西:

$elms.each((index, item) => $(item).addClass('wrong')); 
相關問題