请问:怎么样在ajax中异步调用页面并执行调用页里的JS

问题描述

众说周知 A页面使用AJAX的xmlHttp 异步调用另外一个页面B,是把B页的前端代码(包括HTML,CSS,JS等)是以字符串的形式存储在data里所以在A页面中显示的结果是HTML 但是JS等不体现也不执行请问 怎么样才能使 A页面调用B页面的似乎 也执行其中的JS代码呢?

解决方案

依照ext的做法,先提取返回值中的js代码(包括<script src>和<script></script>2种),针对<script src="**"></script>的情况,用var s = document.createElement('<script>');s.setAttribute('type',"text/script");s.setAttribute('src',"***");var hd = document.getElementsByTagName('head')[0];hd.appendChild(s);来执行.针对<script>script</script>的情况,用window.execScript(script);//script为<script></script>中包含的js代码.或者用eval(script);来执行来执行.另附Ext源码:update : function(html, loadScripts, callback){ if(typeof html == "undefined"){ html = ""; } if(loadScripts !== true){ this.dom.innerHTML = html; if(typeof callback == "function"){ callback(); } return this; } var id = Ext.id(); var dom = this.dom; html += '<span id="' + id + '"></span>'; E.onAvailable(id, function(){ var hd = document.getElementsByTagName("head")[0]; var re = /(?:<script([^>]*)?>)((n|r|.)*?)(?:</script>)/ig; var srcRe = /ssrc=(['"])(.*?)1/i; var typeRe = /stype=(['"])(.*?)1/i; var match; while(match = re.exec(html)){ var attrs = match[1]; var srcMatch = attrs ? attrs.match(srcRe) : false; if(srcMatch && srcMatch[2]){ var s = document.createElement("script"); s.src = srcMatch[2]; var typeMatch = attrs.match(typeRe); if(typeMatch && typeMatch[2]){ s.type = typeMatch[2]; } hd.appendChild(s); }else if(match[2] && match[2].length > 0){ if(window.execScript) { window.execScript(match[2]); } else { window.eval(match[2]); } } } var el = document.getElementById(id); if(el){Ext.removeNode(el);} if(typeof callback == "function"){ callback(); } }); dom.innerHTML = html.replace(/(?:<script.*?>)((n|r|.)*?)(?:</script>)/ig, ""); return this; },
解决方案二:
A调用B的时候,是无法调用到B中的方法的,这点是不用怀疑的.只能让B页面自动执行一些需要在调用的时候执行的函数,并且用一个标识判断该不该执行这些方法:B.htmwindow.onload=function(){ var strParam=location.search.substring(1);//获取传递过来的url参数.即?后面的字符串. if(strParam=="true"){ //执行需要其它页面进行调用执行的JS代码. ... ... }}在A.htm中发送数据的时候,以这种形式:xmlHttp.open("POST","B.htm?true",false);//传一个true到B.htm页面,告诉B页面执行部分代码.xmlHttp.send();

时间: 2024-09-20 00:22:55

请问:怎么样在ajax中异步调用页面并执行调用页里的JS的相关文章

asp.net-ASP.NET中模板页里面的js在一个文件夹里面的内容页使用不了

问题描述 ASP.NET中模板页里面的js在一个文件夹里面的内容页使用不了 ASP.NET中模板页里面的js在一个文件夹里面的内容页使用不了 解决方案 这个是路径不对导致的 解决方案二: http://www.jb51.net/article/22825.htm 解决方案三: 是不是有身份验证,而你没有登录 解决方案四: 路径不对,重新设置路径 解决方案五: 路径不对,从火狐的firebug看一下,JS路径有没有404或者JS有没有报错

请问一下,CSDN中帖子管理页面,点无满意答案结贴中弹出的类似showmodaldialog的窗体是怎么做的啊?

问题描述 rt......... 解决方案 解决方案二:是不是这个?<html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/><title>无标题文档</title></head><body><divclass="cecmbody"id="cecmpo

ajax中如何实现innerHTML中javascript的运行

ajax|javascript 在参考前人的一些做法后,采用了一些变通方式,和添加一些额外标记,来较好的实现innerHTML中javascript的运行,从而使的页面各个模块间更 好的交互,和数据共享. 先看下面的例子: <html><head></head><script> var title = "hello"; var time = 0; var author = "vickenyang"; var email

javascript-外部导入Javascript中的if语句无法执行判断

问题描述 外部导入Javascript中的if语句无法执行判断 解决方案 导入的js文件和内嵌js代码块不能共用一个script,要分别使用不同的script 解决方案二: 你找找看是不是你哪里有小毛病如果没有哪种方式执行了就用哪种:我在写javascript时也经常遇到这种问题. 解决方案三: 请问楼主,你的问题最后就是出现在括号这里吗

ajax中的async属性值之同步和异步及同步和异步区别_AJAX相关

jquery中ajax方法有个属性async用于控制同步和异步,默认是true,即ajax请求默认是异步请求,有时项目中会用到AJAX同步.这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出现假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面假死状态解除.而异步则这个AJAX代码运行中的时候其他代码一样可以运行. ajax中async这个属性,用于控制请求数据的方式,默认是true,即默认以异步的方式请求数据. 一.async值为true (异步) 当

[100分]求ms ajax中关于js 调用服务端代码的方法

问题描述 以前用AjaxPro好像很容易,但换成MsAjax后不知该怎么做.要能实现异步回传的,就是在页面中使用了UpdatePanel控件.我提问一般都是给100分的.知道的快来吧. 解决方案 解决方案二:没用过.解决方案三:该回复于2008-04-10 08:33:57被版主删除解决方案四:没用过.解决方案五:该回复于2008-04-10 08:33:55被版主删除解决方案六:我现在正在学一本书叫asp.netajax程序设计第II卷microsoftajaxlibrary异步通信层是陈黎夫

ajax中的async属性值之同步和异步及同步和异步区别

jquery中ajax方法有个属性async用于控制同步和异步,默认是true,即ajax请求默认是异步请求,有时项目中会用到AJAX同步.这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出现假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面假死状态解除.而异步则这个AJAX代码运行中的时候其他代码一样可以运行. ajax中async这个属性,用于控制请求数据的方式,默认是true,即默认以异步的方式请求数据. 一.async值为true (异步) 当

Ajax程序中,自己实现页面前进、后退、与标签功能(asp.net2.0)

ajax|asp.net|程序|页面        第一次写博客,并且斗胆发表技术类文章,请大家不要见笑,有写的失败或雷同的地方请大家扔砖头敲我吧!       Ajax刚入门不久,便写了一个Ajax+C#的留言本程序,在实际写程序中,渐渐发现了Ajax程序许多不成熟的地方,其中比较典型的就是页面的前进.后退与标签问题,因为Ajax整个程序是采用无刷新与服务器进行交互,所以导致了大部分浏览器的前进后退的功能按钮失效,当然标签功能也失去了意义,如果用Ajax开发一个论坛的话,在堆积如山的帖子中必然

jQuery异步调用页面后台实例分析

jQuery调用页面后台方法‏如下: 给出了两个简单的例子,无参数的和有参数的,返回的都是json数据. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="JqueryCSMethodForm.aspx.cs" Inherits="JQuerWeb.JqueryCSMethodForm" %>   <!DOCTYPE html PUBLIC &