【问题标题】:jQuery, Ajax and getting a complete html structure backjQuery、Ajax 和获取完整的 html 结构
【发布时间】:2009-06-11 19:24:36
【问题描述】:

我是 jQuery 新手,在某种程度上是 JavaScript 编程新手。我已经成功地开始在我的 Ajax 调用中使用 jQuery,但是我很困惑,我确信这是一个新手问题,但是这里可以。

我试图在 Ajax 调用中返回一个完整的 html 结构,即表结构。然而,不断发生的事情是,jQuery 要么剥离 html 标签,只插入最深层次的“文本”,要么将 <> 等特殊字符替换为转义字符

我需要知道如何关闭对接收字符的处理。使用萤火虫,我看到响应正确地从我的 WebServer 发出,但用户收到并因此由 jQuery 处理的页面不正确。一个简单的例子就是我的意思。

我要发送这样的东西

<results><table id="test"><tr>test</tr></table></results>

如果我进行页面源视图,我的页面上显示的是这个。

&lt;results&gt;&lt;table....

所以你可以看到特殊字符正在被转换,我不知道如何阻止它。

我们的想法是让&lt;results&gt;&lt;/results&gt; 成为 xml 标记,并将该标记的文本放入我页面上现有的 &lt;div&gt; 中。

这是我用来下拉响应和插入的 JavaScript:

$.post(url, params, function(data) 
{ 
  $('#queryresultsblock').text(data)
}, "html"); 

我尝试了除“html”之外的各种选项,例如“xml”、“text”等。它们都做了各种各样的事情,“html”让我最接近。

【问题讨论】:

  • 看起来 StackOverflow 误解了您的第二组结果。你能修复它以显示你真正看到的东西吗?
  • @timashman:您缺少实际拉下响应并将其插入页面的代码...这很重要:您在使用什么?
  • @shog9:这是我用来下拉响应和插入的 javascipt。 $.post(url, params, function(data) { $('#queryresultsblock').text(data)}, "html");我尝试了除“html”之外的各种选项,例如“xml”、“text”等。它们都做了各种各样的事情,“html”让我最接近。

标签: javascript jquery html ajax


【解决方案1】:

最简单的方法就是返回您的原始 HTML 并使用 jQuery 的 html 方法。

你的结果:

<table id="test"><tr>test</tr></table>

您的 Javascript 调用:

$.post(url, params, function(data){ $('#queryresultsblock').html(data) })

另一种控制较少的解决方案——你只能发出一个 GET 请求——但更简单的是使用load

$("#queryresultsblock").load(url);

如果您必须在 results XML 标记中返回结果,您可以尝试将 jQuery 选择器添加到您的 load 调用中:

$("#queryresultsblock").load(url + " #test");

【讨论】:

  • 谢谢。这做到了。我知道这一定是我缺乏 jquery 知识。
  • 不要感觉太糟糕:p 这是 $.text 页面上的一个小注释(我也遇到过这个问题); “我们需要注意 [$.text] 会根据需要对提供的字符串进行转义,以便在 HTML 中正确呈现。为此,它调用 DOM 方法 .createTextNode(), 将特殊字符替换为HTML 实体等价物(例如 < for 。而 $.html() 实际上使用 .innerHTML 将其作为元素放回 DOM
【解决方案2】:

您不能将未转义的 HTML 放入 XML 中。我认为有两个不错的选择。

一种方法是在 XML 中发送转义的 HTML,然后在客户端使用一些 JavaScript 对该 HTML 进行转义。所以你会发送

<results>&lt;results&gt;&lt;table....

而 javascript 会将 &amp;lt; 转换为

另一个选择,也是我要做的,是使用 JSON 而不是 XML。

{'results': "<table id="test"><tr>test</tr></table>" }

JavaScript 应该能够将该 HTML 结构提取为字符串并将其直接插入到您的页面中,而无需任何形式的转义或取消转义。

【讨论】:

  • 您实际上可以使用 CDATA 在 XML 中放置未转义的标签:w3schools.com/XML/xml_cdata.asp
  • 谢谢,这就是你的奇怪之处。如果我只用一个警报(数据)替换我的javascript返回函数中的assign语句,那么正确的文本就在那里 ...所以必须是jquery在处理输入时进行这种转换,有没有办法强制或者在 jquery 中使用一个进程来接受这个文本。
【解决方案3】:

您可以做的另一件事是创建一个外部 .html 文件,其中仅包含您的 HTML 代码 sn-p。所以用

创建 include.html
<results><table id="test"><tr>test</tr></table></results>

作为内容,然后使用 jquery .load 函数将其加载到页面上。亲身体验here

【讨论】:

    猜你喜欢
    • 2016-02-07
    • 2021-09-27
    • 1970-01-01
    • 2012-07-31
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    • 1970-01-01
    相关资源
    最近更新 更多