-2

我正在用 ajax 接收的 html 替换正文 html。问题是我复制了 HEAD 部分。

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

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

我从 POST 获取 html。这是一个格式良好的html。

我正在使用 Django 的 render_to_response 来发回响应。

我怎样才能做到这一点?

4

4 回答 4

0

我建议排除head服务器端,但因为我不知道你会如何在 django 中做到这一点,所以这是一个 hackish 且极其丑陋的解决方案,至少可以工作,不像其他解决方案,$(data).find('body')由于 jQuery,它永远不会匹配任何元素自动解析并排除标签body旁边的标签。htmlhead

看哪,正则表达式的力量!

$('body').html(/<body[\s\S]*?>([\s\S]*?)<\/body>/.exec(data)[1]);

小提琴

我不建议将其用于生产环境,因为发送head只是浪费了两端的带宽,并且正则表达式不是最合适的解决方案。在您将服务器部分页面切换到 ajax 请求之前,它至少应该适用于开发。

于 2013-01-12T22:42:34.387 回答
0

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

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

于 2013-01-13T22:35:48.353 回答
-1

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

编辑:这行不通;请参阅下面的 Fabricio 评论和我的回复以了解原因。一种解决方法是用给定的 ID 将你的所有内容包装body在一个 div 中,然后像这样选择这个 ID:$('body').html($(data).filter('#chosenid'));当然,这实际上与$('body').load('remote_page.html #chosenid');将 AJAX 调用组合到同一个请求中没有什么不同。

于 2013-01-12T22:19:51.783 回答
-1

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

$("body").load("yourNextPage.html");
于 2013-01-12T22:20:18.473 回答