Javascript 用通过AJAX检索的内容替换HTML页面

Javascript 用通过AJAX检索的内容替换HTML页面,javascript,html,ajax,dom,Javascript,Html,Ajax,Dom,我有一个具有典型结构的HTML页面: ... 内容 var success\u callback=函数(数据){ //用“数据”替换页面内容和结构 } ajax(url、params、success\u回调); 你认为有可能吗?我已经尝试给html标记一个id,并执行$(id).replace(数据)没有成功 不要问我为什么,但这正是我所需要的(我正在使用一个特殊的“mashupbuilder”站点……说来话长) 编辑:我忘了说必须执行接收内容中的脚本,即使是使用的外部脚本也可以尝试执行 d

我有一个具有典型结构的HTML页面:


...
内容
var success\u callback=函数(数据){
//用“数据”替换页面内容和结构
}
ajax(url、params、success\u回调);
你认为有可能吗?我已经尝试给html标记一个id,并执行
$(id).replace(数据)没有成功

不要问我为什么,但这正是我所需要的(我正在使用一个特殊的“mashupbuilder”站点……说来话长)

编辑:我忘了说必须执行接收内容中的脚本,即使是使用

的外部脚本也可以尝试执行

document.getElementById(id).innerHTML = ajax_response
以下是如何在:
$(id).更新(数据)

和:
$('#id')。替换为(数据)

但是
document.getElementById(id).innerHTML=data
也应该可以工作


编辑:Prototype和jQuery会自动为您评估脚本。

使用jQuery试试这个:

$('body').load( url,[data],[callback] );

上阅读更多信息,我假设您正在使用jQuery或类似的工具。如果您使用的是jQuery,那么以下各项应该可以工作:

<html>
<head>
   <script src="jquery.js" type="text/javascript"></script>
</head>
<body>
   content
</body>
<script type="text/javascript">
   $("body").load(url);
</script>
</html>

内容
$(“正文”).load(url);

您不能尝试用document.body处理程序替换正文内容吗

如果您的页面是这样的:

<html>
<body>
blablabla
<script type="text/javascript">
document.body.innerHTML="hi!";
</script>
</body>
</html>

喋喋不休
document.body.innerHTML=“嗨!”;
只需使用document.body替换主体

这对我有用。BODY标记的所有内容都将替换为指定的innerHTML。 如果您甚至需要更改html标记和所有child,您应该检查“document.”的哪些标记能够这样做

其中包含javascript脚本的示例:

<html>
<body>
blablabla
<script type="text/javascript">
var changeme = "<button onClick=\"document.bgColor = \'#000000\'\">click</button>";
document.body.innerHTML=changeme;
</script>
</body>

喋喋不休
var changeme=“单击”;
document.body.innerHTML=changeme;

通过这种方式,您可以在新内容中编写javascript脚本。不过别忘了转义所有的双引号和单引号,否则它将不起作用。javascript中的转义可以通过遍历代码并在所有单引号和双引号前加反斜杠来完成


请记住,像php这样的服务器端脚本不是这样工作的。由于PHP是服务器端脚本,因此必须在加载页面之前对其进行处理。Javascript是一种在客户端工作的语言,因此无法激活php代码的重新处理。

最简单的方法是使用以下命令设置新的HTML内容:

document.open();
document.write(newContent);
document.close();
最简单的方法是

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

我很想了解更多关于需求的信息。我想不出有什么需要这样的东西。你在用哪个js库?重新标记以包含它。它似乎可以与普通JavaScript一起工作(我使用的是Chrome)。document.getElementsByTagName('html')[0].innerHTML='InputHTML here';是的,您几乎是对的,但是使用包含的外部脚本不会被执行。您可以遍历代码并使其像这里所做的那样动态加载这些文件(并执行它们):这样可以动态添加找到的所有脚本。。。或者这太多了?+1因为这个答案取代了整个文档,而不仅仅是正文标记的内容。问题是它在Internet Explorer中不起作用。导致“拒绝访问”错误。在Chrome版本39.0.2171.65 m中,这只是附加到文档中。请注意,此方法完全按照要求工作,但不会更新浏览器历史记录。如果在“document.write()”操作之后单击浏览器中的“上一步”按钮,则在重定向之前不会返回到页面,而是会返回到页面前面的页面。@IgnacioSetura:您可以始终使用。它首先需要jQuery。如果您需要在不加载外部lib的情况下立即完成,那么这不是一个好的选择。