AJAX将外部页面加载到div中,无javascript

我一直在尝试整个问题,但没有在哪里解决这个问题. 我正在开发一个新网站,并希望它在Lightbox中显示一个网页,并在主页上添加了一个外部页面,两者都成功地分开了,但是直到我合并后,我才遇到了问题. 我的目的是让Ajax将外部页面添加到DIV中,然后从该DIV加载Lightbox,尽管这是问题所在的地方,因为我无法从中运行任何形式的JavaScript - 我的Ajax代码(来自DynamicDrive)

选择 | 换行 | 行号
  1. var loadedobjects=""
  2. function LoadPage(url, containerid){
  3. var page_request = false
  4. if (window.XMLHttpRequest) // if Mozilla, Safari etc
  5. page_request = new XMLHttpRequest()
  6. else if (window.ActiveXObject){ // if IE
  7. try {
  8. page_request = new ActiveXObject("Msxml2.XMLHTTP")
  9. catch (e){
  10. try{
  11. page_request = new ActiveXObject("Microsoft.XMLHTTP")
  12. }
  13. catch (e){}
  14. }
  15. }
  16. else
  17. return false
  18. page_request.onreadystatechange=function(){
  19. loadpage(page_request, containerid)
  20. }
  21. page_request.open('GET', url, true)
  22. page_request.send(null)
  23. }
  24.  
  25. function loadpage(page_request, containerid){
  26. if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))
  27. document.getElementById(containerid).innerHTML=page_request.responseText
  28. }

我已经尝试了评估和许多其他方法,但是没有运气,但是我对Ajax / JavaScript是新手

# 回答1

因此,您的ResponseText将包含JavaScript代码? 该代码必须显式评估. 您可以将其与页面分开,并动态包含脚本标签,或者需要从响应中提取JavaScript代码并进行评估. 亲切的问候
# 回答2

你有解决方案吗? 我有同样的问题,但找不到解决方案!
# 回答3

没有,尽管没有任何东西,但仍在寻找解决方案
# 回答4

您是否尝试分开加载脚本或已经加载脚本,以便您只需要调用它? 您只需要确保评估脚本...因为加载带有XMLHTTPREQUEST的脚本不会做到这一点...
# 回答5

我有一个index.php包含:

选择 | 换行 | 行号
  1. <title>index page</title>
  2. <!-- CSS !-->
  3. <link rel="stylesheet" href="css/lightbox.css" media="screen,projection" type="text/css" />
  4. <link rel="stylesheet" href="css/website.css" media="screen,projection" type="text/css" />
  5.  
  6. <!-- JavaScript !-->
  7. <script type="text/javascript" src="scripts/java.js"></script>
  8. <script type="text/javascript" src="scripts/prototype.js"></script>
  9. <script type="text/javascript" src="scripts/lightbox.js"></script>
  10. </head>
  11. <body  onLoad="LoadPage('houses.php', 'hlist');">

我试图允许JavaScript加载的新页面使用" Lightbox.js"和" Prototype.js"中包含的JavaScript 希望这能更好地解释我的问题,并感谢您到目前为止的帮助

# 回答6

因此,您将一个页面加载到现有页面中,并想调用现有的并已经在新加载的内容上评估了JavaScript方法吗? ...从Ajax-Request的成功反驳中,这很容易. 基本上,这是您的负载功能...还是我想念Soeming? 在该功能中,设置InnerHTML后,您可以在该内容上调用所有现有功能. 你有任何错误吗? 亲切的问候
# 回答7

你好, 到目前为止,我的代码均未得到评估. 我尝试动态添加JavaScript文件,原型和Lightbox,但没有运气. 希望这会有所帮助: 索引页加载Java.js,Prototype.js和Lightbox.js java.js将houses.php放入索引页面上的div hlist 另一个信息是使用类使用Lightbox的JavaScript,因为Lightbox.js在索引页面上创建了一个新类. 希望这能清除一切
# 回答8

因此,在您的index.php中,脚本存在,因此在pageload上已经评估了脚本. 那就是我的意思. 问题似乎是lightbox.js在pageload上初始化,以便未观察到pageload后附加的节点? 似乎再次致电构造函数可以解决问题...因此,请尝试致电:

选择 | 换行 | 行号
  1. new Lightbox;
  2.  

AP之后 等待内容. 如果有效的话,我们可以尝试改进一点:) 亲切的问候

# 回答9

仍然没有运气,我认为我可能必须尝试另一种方法来获得我想要的结果. 谢谢你的帮助
# 回答10

一个新的Lightbox Init应该起作用...您是否会在FF的Firebug中遇到任何错误?
# 回答11

Firebug说LB0N未定义
# 回答12

当您尝试Reinit时? 还是当您单击某些内容? ...它来自lightbox.js ...您有一个示例页面要遵循吗? 您使用哪个Lightbox版本?
# 回答13

你好, 对不起,回复很晚,过去一周的工作安装了. 这是一个包含我使用的代码的zip文件的链接. http://freshrob.com/index.zip
# 回答14

检查了代码和与该示例一起使用的简单黑客,如下所示:

选择 | 换行 | 行号
  1. function loadpage(page_request, containerid) {
  2.     if (page_request.readyState == 4 
  3.             && (page_request.status == 200 
  4.             || window.location.href.indexOf("http") == -1)) {
  5.         var d = document.getElementById(containerid);
  6.         d.innerHTML = page_request.responseText;
  7.  
  8.         new lightbox(d.getElementsByTagName('A')[0]);
  9.     }
  10. }
  11.  

因此,只有带有有问题节点的灯箱的重盒可以解决问题... 亲切的问候

# 回答15

我有很长的路要走,这是Qwerks,但您给了我一个良好的开端:-) 谢谢你的帮助.
# 回答16

没问题...如果您还有更多问题,只需发布回论坛. 亲切的问候
# 回答17

抱歉,我需要帮助. 谷歌搜索几天,没有成功.我想要类似的事情与Freshrob一样. 加载具有JS和CSS依赖性的外部HTML页面. 主页的AJAX JS在外部文件中 ''JS/ajax.js"

选择 | 换行 | 行号
  1. var bustcachevar=1 //bust potential caching of external pages after initial request? (1=yes, 0=no)
  2. var loadedobjects=""
  3. var rootdomain="http://"+window.location.hostname
  4. var bustcacheparameter=""
  5.  
  6. function ajaxpage(url, containerid){
  7. var page_request = false
  8. if (window.XMLHttpRequest) // if Mozilla, Safari etc
  9.     page_request = new XMLHttpRequest()
  10. else if (window.ActiveXObject){ // if IE
  11. try {
  12.     page_request = new ActiveXObject("Msxml2.XMLHTTP")
  13. catch (e){
  14. try{
  15.     page_request = new ActiveXObject("Microsoft.XMLHTTP")
  16. }
  17. catch (e){}
  18. }
  19. }
  20. else
  21. return false
  22. page_request.onreadystatechange=function(){
  23.     loadpage(page_request, containerid)
  24. }
  25. if (bustcachevar) //if bust caching of external page
  26.     bustcacheparameter=(url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime()
  27.     page_request.open('GET', url+bustcacheparameter, true)
  28.     page_request.send(null)
  29. }
  30.  
  31. function loadpage(page_request, containerid){ 
  32.     if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))
  33.         document.getElementById(containerid).innerHTML=page_request.responseText
  34. }
  35.  
  36. function loadobjs(){  // Load css,js for imported page
  37. if (!document.getElementById)
  38.     return
  39. for (i=0; i<arguments.length; i++){
  40.     var file=arguments[i]
  41.     var fileref=""
  42.     if (loadedobjects.indexOf(file)==-1){ //Check to see if this object has not already been added to page before proceeding
  43.     if (file.indexOf(".js")!=-1){ //If object is a js file
  44.     fileref=document.createElement('script')
  45.     fileref.setAttribute("type","text/javascript");
  46.     fileref.setAttribute("src", file);
  47. }
  48. else if (file.indexOf(".css")!=-1){ //If object is a css file
  49.     fileref=document.createElement("link")
  50.     fileref.setAttribute("rel", "stylesheet");
  51.     fileref.setAttribute("type", "text/css");
  52.     fileref.setAttribute("href", file);
  53. }
  54. }
  55. if (fileref!=""){
  56.     document.getElementsByTagName("head").item(0).appendChild(fileref)
  57.     loadedobjects+=file+" " //Remember this object as being already added to page
  58. }
  59. }
  60. }
  61. window.onload = function init(){
  62.        ajaxpage("main.html","mainDiv");
  63.        ajaxpage("left.html","leftDiv");
  64. }
  65.  

主 - 索引html头标签:

选择 | 换行 | 行号
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>::----- ::</title>
  6. <script src="Scripts/swfobject_modified.js" type="text/javascript"></script>
  7. <script src="js/ajax.js" type="text/javascript"></script>

不起作用的操作(应该加载外部装饰盒或Lightbox或Tickbox Image Gallery页面以使用所有依赖性文件):

选择 | 换行 | 行号
  1. <a href="javascript :ajaxpage('jq.html','main'); 
  2. loadobjs('tickbox-code/jquery-1.1.3.1.pack.js','tickbox-code/thickbox.js','tickbox-code/thickbox.css');">test
  3. //Note that function loadobjs() can invoke any number of CSS and external JavaScript files
  4.  

因此,现在我可以在" Main" Div中加载外部(IMG画廊)页面,但是当单击缩略图时,我会撞到墙壁,它可以按照预期打开新窗口. 请一些建议. 谢谢你. PS"对不起我的英语不好" 嘿:),我想完全按照命中量扩展时发生的事情 - 该论坛中的代码按钮!!!

# 回答18

我想我还没有得到它...所显示的代码不能帮助我理解您的问题...请尝试以某种方式重新调解问题,以便您清楚您拥有什么,您拥有什么 想逐步进行. 可能是我今天不太健康,我想念一些东西...但是要帮助我理解它...我认为对问题进行更详细的解释会很好... 亲切的问候
# 回答19

Gits,谢谢您的快速重播. 是的,我在上一篇文章中感到困惑.我真正想做的是将Lightbox Gallery加载到主页的DIV元素中. 演示项目处于附件. 在项目中,您会发现: 1.index.html(我创建) 2.js dir与ajax.js(由我创建) 所有休息都带有Lightbox Gallery教程. 谢谢 附加的文件 File Type: zip 01.zip (334.4 KB,588次观点)
# 回答20

我应该做什么 那个代码? ...据我所知,页面上有一个链接...当单击一些图像时,CSS和JS应该加载XMLHTTPRequest ...现在吗? 问题是什么? 正如我已经说过的...问题的详细说明对于在任何地方获得任何支持至关重要...没有人会挖掘您的代码试图找到问题...当您尝试用单词逐步描述它时. .这通常会导致您自己找到答案的程度...或至少明确了问题的真正发生... 亲切的问候
# 回答21

再次抱歉. 1.如果您将" Gallery.php"作为独立页面运行,然后单击缩略图,您会注意到对图像的视觉效果. 2.在" index.html"页面中,我有一个元素和一个链接"画廊". 3.目标是在索引页面上单击"画廊"链接时将Gallery.php加载到DIV中. 现实中发生了什么...当Gallery.php加载到索引页面的DIV时,您单击一些IMG缩略图:( 步骤1中不再描述 ,而不是它打开一个带有图像的单独窗口.在我的拙见中,加载属于gallery.php的extarnal js文件时出了问题,或者应该重新启动某些东西,我没有. 我希望这次我更清楚. 顺便说一句,如果这是不可能的任务,您可以将我推荐给一个图像库,该图库很容易导入并正确地工作. 谢谢!!!
# 回答22

嗨,吉特, 对不起 . 我知道这是一个古老的帖子. 但是我相信你可以帮助我. 我有一个索引页. 一个名为"内容"的div嵌入其中. 我正在索引页面中使用GWT AJAX应用程序. (我相信GWT与我的问题无关.但是,如果那可以帮助我,只是提到了) AJAX应用程序调用服务器端页面,并加载对内容div的响应. AJAX请求的响应是一个学生详细信息页面,其中包含大量使用脚本标签嵌入的JavaScript和脚本文件. 我的问题是,加载到DIV时,学生删除页面中的脚本无法正常工作. 当将stdentpage加载为独立时,脚本正常工作. 有脚本呼叫学生删除页面的身体撞击功能. 加载到Div时也无法正常工作. 我处于情况,我无法在"学生详细信息"页面上更改. 请帮助我..预先感谢.
# 回答23

通过Ajax-call将内容加载到HTML节点中的内容无法即时添加脚本而无需做任何其他事情. 您需要明确触发JavaScript的评估,这意味着您需要以任何方式从加载内容中提取它,然后对其进行评估. 亲切的问候
# 回答24

感谢你能这么快回复. 我了解我需要明确调用JavaScript,而不是在Onload中调用. 单击DIV中加载的内容内部的按钮时,还有其他功能. 该脚本也嵌入了Div的HTML中. 看来他们也无法正常工作. 你能告诉我他们为什么不工作吗? 谢谢
# 回答25

您提到的只是一部分 - 如果您有一些JavaScript代码,可以在节点等上运行页面并循环循环.然后您需要再次调用,就像在主线程的Lightbox-case中一样. 您的问题是我回答之前的问题...当您加载内容和此内容包含Javascript代码...此Javascript编码 需要评估 明确...因为仅在DIV中添加内容不会初始化该评估. 没有该...加载的Javascript代码不会以任何方式解析,因此无法使用... 亲切的问候
# 回答26

你好,吉特和其他人, 我有一个类似的问题,想知道我们是否足够聪明,可以修复它. 我有一个JavaScript代码的一部分,我想在其中一个页面中动态加载Ajax. 该代码是上下文广告公司经常使用的典型代码.

选择 | 换行 | 行号
  1. <script type="text/javascript"><!--
  2. adsize="468x60";
  3. adsection="xxxx";
  4. //--></script>
  5. <script type="text/javascript" src="http://blabla.com/ad.js"></script>
  6.  

因此,脚本中的JavaScript变量告诉您什么样的AD和外部脚本将生成HTML代码,该代码应在我的Ajax页面上特别列出. 问题是. 我可以评估Adsize和Adsection变量. 我还可以动态加载外部JavaScript文件AD.JS,但是一旦我这样做,它将打开一个新窗口并在该新窗口中显示AD. 我如何获取此外部JavaScript文件的内容并Innerhtml在我的Ajax页面上的DIV中,而无需出现此新窗口. 欢呼拉尔斯

# 回答27

您需要分析代码...我想有一个 window.open() 在其中的某个地方...或类似的指令,该指令会导致窗口打开...当您通过Ajax-call加载它时,您首先将其作为响应文本...然后您可以用新的部分替换斑点部分 代码...然后您可能会对其进行评估,并且应该按照需要运行...您可能会做服务器或客户端...您喜欢... 亲切的问候
# 回答28

你好git, 感谢你及时的答复. 我已经在研究外部脚本的代码,并使用smowtion_size =" 468x60"; 和smowtion_section =" 844517"; 我将代码缩小到

选择 | 换行 | 行号
  1. if(!smowtion_counter){var smowtion_counter=1;var smowtion_i=0;var smowtion_log='section='+smowtion_section;var smowtion_vurl=escape(location.href);var smowtion_vref=escape(document.referrer);var script=document.createElement('script');script.type='text/javascript';script.src='http://sw-sess-lb-1763240709.us-east-1.elb.amazonaws.com/session.php?'+smowtion_log;document.getElementsByTagName('head')[0].appendChild(script)}
  2. if(smowtion_i++<5){smowtion_ad_size=smowtion_size.split('x');if(typeof(smowtion_iframe) == "undefined"){
  3. document.write('<SCR' + 'IPT TYPE="text/javascript" SRC="http://ad.smowtion.com/st?ad_type=ad&ad_size='+smowtion_size+'&section='+smowtion_section+'"></SCR' + 'IPT>');}}
  4.  

我发现问题必须在最后一个外部脚本中 http://ad.smowtion.com/st?ad_type=ad...section = 844517 . 我不敢相信没有其他人遇到这个问题. 如果您想在Ajax页面之一中显示Google Ads(Adsense),也会发生这种情况. 并且无法过滤所有外部JavaScript文件以供代码,例如window..open或location.href. 我不太了解一件事. 如果我通过ajax运行它,并且当我在普通页面上使用它时,该外部JavaScript文件的内容如何在空白窗口中加载? 欢呼拉尔斯

# 回答29

基本上,懒惰的脚本和"传统上"包括在页面中的"传统上"之间存在区别... AJAX负载的脚本必须评估为现成的窗口上下文和一个完全渲染的文档...如果脚本依靠在准备好之前需要写的内容,则可能会表现出意外... 请参阅有document.write()指令等...基本上建议不建议在完全渲染的页面中使用...因为在大多数情况下,当脚本不打算为时,它将破坏DOM 懒惰的负载然后您不能期望它们按预期工作... 您只能以这种方式可靠的脚本是您自己编写和/或准备使用这种使用的脚本... 亲切的问候

标签: Javascript

添加新评论