Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery ajax html回调中的换行符会导致错误_Ajax_Jquery - Fatal编程技术网

jQuery ajax html回调中的换行符会导致错误

jQuery ajax html回调中的换行符会导致错误,ajax,jquery,Ajax,Jquery,我正在从$.ajax调用返回一大块HTML。来自PHP的字符串在开头有两个换行符,例如 $data = " <div> <p>Here is some text</p> </div>"; 在我添加.hide().fadeIn(300)之前,一切都会正常工作,它会在该点抛出:TypeError:“undefined”不是对象(评估'hooks.cur=fn')jquery.js:1925。如果我把线去掉,它就会工作。我使用的是$.par

我正在从
$.ajax
调用返回一大块HTML。来自PHP的字符串在开头有两个换行符,例如

$data = "

<div>
     <p>Here is some text</p>
</div>";
在我添加
.hide().fadeIn(300)
之前,一切都会正常工作,它会在该点抛出:
TypeError:“undefined”不是对象(评估'hooks.cur=fn')jquery.js:1925
。如果我把线去掉,它就会工作。我使用的是
$.parseHTML
,因为jQuery说:

如果已知字符串为HTML,但可能以任意文本开头,则 不是HTML标记,请将其传递给jQuery.parseHTML(),后者将返回 表示标记的DOM节点数组。可以创建jQuery集合 由此创建,例如:$($.parseHTML(htmlString))


知道发生了什么吗?

这个问题似乎是由集合中的文本节点引起的,您可以使用
将其过滤掉。filter('*')


我的HTML字符串没有任何顶级文本节点,或者我认为。。。我发现问题只是多余的空白。这对我来说很有效,感觉比以后过滤空节点更好:

$($.parseHTML($.trim(html_string)))

可能
.parseHTML()
正在将HTML数据分解为数组,而不仅仅是其中包含jQuery对象,即
\n
,或者正在发生类似的情况。请尝试筛选文本节点,查看错误是否仍然存在
.filter('*')
.Bingo<代码>var$html=$($.parseHTML(数据)).filter('*')工作。回答这个问题,我会接受的。嗨,我用trim解决了一个类似的问题,但是用另一个函数解决了同样的问题。你介意看一下吗?
var $html = $($.parseHTML(data)).filter('*');
$($.parseHTML($.trim(html_string)))