然后写下来

时间:2013-07-22 20:53:34

标签: jquery html ajax text

[尝试1]

<script>
var example = $.get("example.html");
document.writeln(example);
</script>

我希望将源文件嵌入为原始文本(不是标记)。这甚至没有接近工作。

感谢大家的帮助和投入到目前为止!

[尝试2/3] @JasonP

...
<script>
$(document).ready(function () {
    $.get("example.html").done(function (result) {
        $('#SomeElement').text(result);
    });
});
</script>
...
<a id="SomeElement" />
...

截至尝试3,我仍然没有从中得到任何东西。但是,我理解'准备好'。

4 个答案:

答案 0 :(得分:3)

你说你想要原始文本而不是标记。我认为您的意思是希望“<span>text</span>”在页面上显示为“<span>text</span>”,而不是包含文字“text”的范围。如果这是真的,这应该将结果写为文本而不是html:

$.get("example.html").done(function(result) {
    $('#SomeElement').text(result);
});

您的示例无效,因为$.get是异步的。发送ajax请求,然后执行继续,document.writeln()行运行,但由于我们还没有ajax调用的结果,所以不打印任何内容。我的示例使用在{ajax函数返回结果后执行的done()函数。

根据您的问题编辑

修改

两件事。

首先,#选择器用于元素id s:

<a id="SomeElement" />

其次,确保将代码包装在一个就绪处理程序中,以便在尝试访问它时确保该元素存在:

$(document).ready(function() {
    $.get("example.html").done(function(result) {
        $('#SomeElement').text(result);
    });    
});

答案 1 :(得分:2)

$.get是异步的。也就是说,您不能同步写入Ajax调用的结果(除非使用非异步ajax,但这很丑陋并经常冻结浏览器UI)。此外,$.get会返回与jqXHR object界面兼容的$.Deferred。您应该将成功回调传递给$.get或附加Deferred.done处理程序。

<div id="dynamicContent"></div>
<script>
//passing a callback function to $.get:
$.get("example.html", function(data) {
    $('#dynamicContent').text(data);
});
</script>

另一种方法,将完成回调附加到延迟实例:

$.get("example.html").done(function(data) {
    $('#dynamicContent').text(data);
});

您需要使用.text()将收到的响应设置为#dynamicContent元素的文本内容。 .text()会将响应附加为文本节点,因此不会将其解释为HTML。

答案 2 :(得分:1)

尝试:

$("body").text(example)

writeIn()不是最好的方法。

答案 3 :(得分:0)

您可以尝试将其附加到html文件的子文件中,例如

$.get("example.html", function(data){
$('body').text(data);
});

它会添加到你的身上。 (我在Connor和Kevin B的帮助下编辑)。虽然,Jason P.有一个很好的答案。