从AJAX调用中删除HTML中的HEAD

时间:2013-01-12 22:17:05

标签: javascript jquery django

我用ajax收到的html替换了body html。 问题是我有重复的HEAD部分。

我首先要从收到的html中删除整行,然后使用:

$('body').html(data);

我从POST获得了html作为结果。 这是一个格式良好的HTML。

我正在使用Django的render_to_response来发送回复。

我怎样才能实现这样的目标?

4 个答案:

答案 0 :(得分:0)

我建议排除head服务器端,但由于我不知道你在django中是怎么做的,所以这是一个至少可行的hackish和极其丑陋的解决方案,不像其他解决方案{ {1}}永远不会匹配任何元素,因为jQuery解析会自动将$(data).find('body')标记排除在bodyhtml之外。

看,正则表达的力量!

head

Fiddle

我不建议将其用于生产环境,因为通过$('body').html(/<body[\s\S]*?>([\s\S]*?)<\/body>/.exec(data)[1]); 发送只是两端浪费的带宽而且正则表达式不是最合适的解决方案。在您将服务器部分页面切换到ajax请求之前,它至少应该用于开发。

答案 1 :(得分:0)

这些解决方案看起来都非常糟糕......说真的,只需移除服务器端的头部即可!

如果您正在使用render_to_响应,则必须向其传递模板名称以进行渲染。在那个模板中,只是不要写任何头代码!只需将代码放在body标签之间,就可以了。

答案 2 :(得分:-1)

试试$('body').html($(data).find('body'));。如果您有格式良好的HTML,这将有效。

编辑:这不起作用;请参阅下面的Fabricio评论和我的回复。一种解决方法是将body中的所有内容都包含在具有给定ID的div中,然后选择此ID,如下所示:$('body').html($(data).filter('#chosenid'));当然,这与说$('body').load('remote_page.html #chosenid');无异于将AJAX调用结合到同一个请求中。

答案 3 :(得分:-1)

你是否在你身上插入文字? 您应该使用load-method,但要注意脚本:)

$("body").load("yourNextPage.html");