2013-07-11 14 views
22

私はAJAXに自分のサイトをAJAXifyするように教えています。私のテンプレートでは、次のJSコードを使用してビューからJSONデータを取得し、divにデータを追加します。未知の型エラー:未定義のプロパティ '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 div要素に追加されていません。

それは、このエラーを与える:

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

+2

。何が起こると思いますか? – Pointy

+0

私はそれがdivにデータをロードすることを期待していると思います...私はこれをどのように達成することができますか?このAJAXyの新しいものです... – Denny

+2

'$( '。mainContent')。children()。remove(); 'appendTo'を実行すると、jqueryは' $(data) 'を期待しています。これはおそらくこの場合はそうではないdomノードになる – karthikr

答えて

26

あなたはデータのいくつかのフォーム、jQueryのにセレクタをいない渡していることを確認してください:

$('.my-selector') 

ない:

$([ 'my-data' ]) 
12

私は同様の問題がありました。 jQuery.mapを使用していましたが、jQuery.map(...)を使用するのを忘れてしまいました。最後にget()を通常の配列で使用するのを忘れました。

0

$elms.each()の中に同じ問題が出てきました。

ため:

  1. あなたは(少なくとも).each(Function)露出する二つの引数に渡す機能。インデックスと、リスト内の現在の要素内の要素である第2、および
  2. である第1の他の同様のループ方法は、あなたがする誘惑されるかもしれ

指数の前に配列の要素を現在与えるため、この:

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

これは何が必要です:あなたが戻ってJSONを取得している場合は、単にDOMにそれを追加が仕事に行くのではありません

$elms.each((index, item) => $(item).addClass('wrong')); 
関連する問題