将HTML页面replace为通过AJAX检索的内容
我有一个典型的结构的HTML页面:
<html> <head> <script src="..." ></script> <style>...</style> </head> <body> content </body> <script> var success_callback = function(data) { // REPLACE PAGE CONTENT & STRUCTURE WITH "data" } ajax(url, params, success_callback); </script> </html>
你认为这是可能的吗? 我已经尝试给html标签一个id和$(id).replace(data);
没有成功。
不要问我为什么,但这是我需要的(我正在与一个特殊的“混搭build设者”网站…这是一个很长的故事)。
编辑 :我忘了说, 接收到的内容中的脚本必须执行 ,甚至包括使用<script src="...">
外部脚本。
用jQuery试试这个:
$('body').load( url,[data],[callback] );
阅读docs.jquery.com / Ajax / load
最简单的方法是使用以下命令设置新的HTML内容:
document.open(); document.write(newContent); document.close();
这里是如何在原型 : $(id).update(data)
和jQuery : $('#id').replaceWith(data)
但是document.getElementById(id).innerHTML=data
也可以。
编辑:原型和jQuery自动为您评估脚本。
你可以试试
document.getElementById(id).innerHTML = ajax_response
我假设你正在使用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>
你不能只是尝试用document.body处理程序来replace正文内容吗?
如果你的网页是这样的:
<html> <body> blablabla <script type="text/javascript"> document.body.innerHTML="hi!"; </script> </body> </html>
只需使用document.body来replace正文。
这对我有用。 BODY标签的所有内容都被您指定的innerHTML所取代。 如果你甚至需要更改html标签和所有孩子,你应该检查“文档”的哪些标签。 有能力这样做。
里面有一个javascript脚本的例子:
<html> <body> blablabla <script type="text/javascript"> var changeme = "<button onClick=\"document.bgColor = \'#000000\'\">click</button>"; document.body.innerHTML=changeme; </script> </body>
这样你可以在新的内容里面做JavaScript脚本。 不要忘记尽量避免所有双引号和单引号,否则将无法正常工作。 在javascript中转义可以通过遍历你的代码并在所有的单引号和双引号之前加一个反斜线来完成。
请记住,像php这样的服务器端脚本不能以这种方式工作。 由于PHP是服务器端脚本,它必须在加载页面之前进行处理。 Javascript是一种在客户端工作的语言,因此无法激活对PHP代码的重新处理。
最简单的方法是
$("body").html(data);