2013-07-11 47 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')); 
相关问题