jquery.load无法处理包含部分html的文件

时间:2011-10-17 14:47:10

标签: jquery html

我有一个空的scriptblock:

 <script id="target" type="text/html"></script>

我正在使用

 jQuery("#target").load(...)

将几个单独文件的内容加载到目标scriptblock

为了简化,file1包含starthtml,file2包含一些包含所有开始和结束标记的各种html,file3包含endhtml

文件2加载完美,文件1和3然而不会加载或只是加载部分,而我从加载获得成功状态。看起来我的模板中的htmlcode中存在一些构造(不是结束开始标记或副verca)或某些字符,这些字符不会加载到脚本块中。

以下是加载后我的代码块中不会显示的真实内容:

        </td>
        <td width="1px" style="background-color:#CCCCCC;"></td>
    </tr>
    <tr>
        <td colspan="3" height="1px" style="background-color:#CCCCCC;"></td>
    </tr>
</table>

<!-- *** END WRAPPER TABLE *** -->

</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
</body>
</html>

<!-- *** END HMTL *** -->

如果我用更简单的html替换上面的内容,比如打击,那么它可以正常工作

 </td></tr></table>

可能是什么原因,是否有解决方案或解决方法?

1 个答案:

答案 0 :(得分:3)

好的,我找到了问题的根源和解决方案。

jQuery.load 的问题在于我想要做的是将设置目标元素的.html。使用jQuery设置.html 将导致jQuery解析/评估从服务器返回的有效html的内容,因为.load方法被创建为将内容加载到页面中的快捷方式。

如果使用jQuery.ajax,解析将不会发生,它只是从服务器获取结果,我可以自己进行任何处理,包括将内容放在我想要的元素中。 而不是使用 .html 设置scriptblock的内容我现在可以使用 .text 设置它,它不会解析内容。

这样我就可以在我的scriptblock中设置任何内容,稍后将用它来创建一个html模板/布局,以便在textarea中显示,以便用户可以复制。