2009-06-11 63 views
2

我是新来的jQuery和一定程度上的JavaScript编程。我已经成功地开始使用jQuery为我的ajax调用,但我很难过,我敢肯定这是一个新手问题,但这里。jquery,ajax和获得完整的html结构返回

我想在ajax中调用一个完整的html结构来返回表结构。然而,继续发生的事情是,jquery要么剥离html标签,只插入最深层次的“文本”或像<,>等特殊字符被替换为逃逸者

我需要知道如何转向关闭接收到的字符的处理。使用萤火虫我看到的响应正常从我的网络服务器,但用户收到的页面,因此由jquery处理是不正确的。一个简单的例子就是我的意思。

我送这样的

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

我的网页上显示的内容,如果我做一个页面源视图是这样的。

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

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

想法是将<results></results>作为xml标记,并将该标记的文本放入我的页面上现有的<div>中。

下面是我使用拉下响应,并插入javascipt的:

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

我试过不是“HTML”等各种选项,如,“XML”,“文本”等。他们都做各种各样的事情,“HTML”让我目前最接近。

谢谢你的帮助。

tim

+1

它看起来像StackOverflow的曲解你的第二个结果集。你能解决它以显示你真正看到的? – 2009-06-11 19:29:10

+0

@timashman:您错过了实际将响应拉下并将其插入页面的代码......这很重要:您使用的是什么? – Shog9 2009-06-11 19:30:37

+0

@ shog9:这里是我用来拉下响应和插入的javascipt。 (url,params,function(data){$('#queryresultsblock')。text(data)},“html”); 我已经尝试了除“html”之外的各种选项,如“xml”,“text”等。它们都做各种各样的事情,“html”让我目前最接近。 – 2009-06-11 19:33:58

回答

2

最简单的方法就是返回原始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"); 
1

您不能将非转义的HTML放入XML中。我认为有两种选择是很好的方法。

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

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

和JavaScript将在&lt;转换为<和这样的。

其他选项和我要做的是使用JSON而不是XML。

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

中的JavaScript应该能够提取HTML结构为一个字符串,然后直接插入到您的网页没有任何类型的转义或转义的。

0

您可以做的另一件事是创建一个外部.html文件,只需在其中的HTML代码片段。因此,创建include.html与

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

至于内容,然后使用jQuery的.load函数来获取到页面上。请参阅行动here