2013-03-06 9 views
6

$.ajaxコールから大量のHTMLが返されます。 PHPからの文字列には、最初に2つの改行があります。ここでjQueryの改行ajax htmlコールバックの原因エラー

$data = " 

<div> 
    <p>Here is some text</p> 
</div>"; 

$.ajax呼び出しです:私はそれをスローし、その時点で.hide().fadeIn(300)を追加するまで

$('form#form_id').submit(function(e){ 
    e.preventDefault(); 
    $form = $(this); 
    $.ajax({ 
     url: $form.attr('action'), 
     type: $form.attr('method'), 
     data: $form.serialize(), 
     dataType: 'html', 
     success: function(data) { 
      var $html = $($.parseHTML(data)); 
      $html.appendTo('#container_id').hide().fadeIn(300); 
     } 
    }); 
}); 

すべての作品:TypeError: 'undefined' is not an object (evaluating 'hooks.cur = fn') jquery.js:1925が。改行を削除しても機能します。文字列がHTMLであることが知られているが、 は、HTMLタグがないことを任意のテキストで始めることができ

場合は、 を返しますjQuery.parseHTML()に渡す:jQueryのは言うので、私は$.parseHTMLを使用していますマークアップを表すDOMノードの配列jQueryコレクションは、これから作成される とすることができます。例えば、$($。parseHTML(htmlString))。

何が起こっているのですか?

+1

おそらく '.parseHTML()'その中にjQueryオブジェクトではないだけ配列にHTMLデータをexploidingされ、それは '\ N ' 、または同様のことが起こっています。 –

+0

テキストノードを除外し、エラーが解消されないかどうかを確認してください。 '.filter( '*')'です。 – Musa

+0

ビンゴ。 'var $ html = $($。parseHTML(data))。filter( '*');'働いています。それを答えて、私はそれを受け入れます。 –

答えて

10

問題は、あなたが任意のトップレベルのテキストノードを持っていなかった.filter('*')

var $html = $($.parseHTML(data)).filter('*'); 
+0

こんにちは、私は同様の問題を修正するためにトリムを使用しましたが、別の機能で同じ問題を抱えていました。あなたは見ていただけますか? http://stackoverflow.com/questions/17950520/uncaught-typeerror-with-fadein-in-jquery-1-9 –

0

私のHTML文字列でそれをフィルタリングすることができ、コレクション内のテキストノードに起因すると思われる、またはそう私は思いました。..私は問題がほんの余分な空白であることを発見しました。これは私のために働いた、と後に空のノードをフィルタリングするよりも良い感じています

$($.parseHTML($.trim(html_string))) 
関連する問題