我從$.ajax
調用中返回大量的HTML。來自PHP的字符串在開始處有兩個換行符,例如jQuery中的換行符ajax html回調導致錯誤
$data = "
<div>
<p>Here is some text</p>
</div>";
這裏是$.ajax
電話:
$('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);
}
});
});
一切正常,直到我加入.hide().fadeIn(300)
此時它拋出:TypeError: 'undefined' is not an object (evaluating 'hooks.cur = fn') jquery.js:1925
。如果我刪除了換行符,它就可以工作。我現在用的是$.parseHTML
因爲jQuery說:
如果字符串被稱爲是HTML,但可以用任意的文本啓動 不是HTML標記,把它傳遞給jQuery.parseHTML(),它會返回一個 表示標記的DOM節點數組。一個jQuery集合可以是由此創建的 ,例如:$($。parseHTML(htmlString))。
任何想法是怎麼回事?
可能'.parseHTML()'是exploiding HTML數據到數組不僅與它的jQuery對象,那就是'\ N' ,或類似的事情正在發生。 – 2013-03-06 22:03:28
嘗試過濾出文本節點並查看錯誤是否仍然存在。 '.filter( '*')'。 – Musa 2013-03-06 22:11:25
賓果。 'var $ html = $($。parseHTML(data))。filter('*');'工作。做出答案,我會接受它。 – 2013-03-06 22:14:49