0 0

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

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

2个答案 按时间排序 按投票排序

0 0

采纳的答案

依照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;
    },

2008年8月12日 12:25
0 0

A调用B的时候,是无法调用到B中的方法的,这点是不用怀疑的.

只能让B页面自动执行一些需要在调用的时候执行的函数,并且用一个标识判断该不该执行这些方法:
B.htm

window.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();

2008年8月12日 12:30

相关推荐

    使用ASP.NET AJAX异步调用Web Service和页面中的类方法

    ASP.NET AJAX 提供了一种强大的机制,使得开发者可以方便地在客户端JavaScript中异步调用Web Service和页面中的类方法,极大地简化了原本复杂的Ajax通信。这一特性是ASP.NET AJAX框架的核心优势之一,它允许开发者...

    ajax.net异步调用

    Ajax.NET 是 .NET Framework 中实现 AJAX(Asynchronous JavaScript and XML)技术的一种方式,它允许开发人员在不刷新整个网页的情况下更新页面的部分内容,从而提供更流畅、更快捷的用户体验。这个技术的核心是 ...

    AJAX异步调用代码

    本文将深入解析标题为“AJAX异步调用代码”的内容,该段代码展示了如何使用C#与JavaScript结合,通过AJAX进行前后台数据的异步交互。 ### 一、理解AJAX及其工作原理 AJAX的核心在于`XMLHttpRequest`对象,它允许在...

    ajax异步调用实例

    ajax异步调用实例

    微软Ajax异步调用页面后台类和WebSerivce例子

    让我们深入探讨一下“微软Ajax异步调用页面后台类和WebService例子”所涉及的知识点。 首先,**Ajax(Asynchronous JavaScript and XML)**是一种在不刷新整个网页的情况下更新部分网页内容的技术。它通过...

    JQuery中Ajax的异步调用 示例

    JQuery,JQuery,JQuery,JQuery,JQuery,JQuery,JQuery,JQuery,JQuery,JQuery,JQuery,JQuery,ajax,ajax,ajax,ajax,ajax,ajax,ajax,ajax,ajax,ajax,ajax,ajax,ajax,ajax,ajax,ajax,一个关于在js中通过JQuery实现异步无...

    ajax异步调用webservice实例

    总结,AJAX异步调用WebService是现代Web应用中常见的一种通信方式,它极大地提升了用户体验。理解并掌握这一技术,对于Web开发者来说至关重要。通过实际的代码示例和不断的实践,你可以更深入地理解和应用这个技术。

    JQ+ajax实现异步调用

    在Web开发中,异步调用是至关重要的技术,它使得网页可以在不刷新整个页面的情况下与服务器进行数据交互,提供更好的用户体验。本话题主要聚焦于使用jQuery(简称JQ)库结合Ajax技术来实现异步调用的过程。下面将...

    ajax异步调用数据

    综上所述,"ajax异步调用数据"是一个关于利用JavaScript和XML(或JSON)技术实现页面无刷新的数据更新的学习项目。通过理解和实践,开发者可以掌握Ajax的基本用法,提高用户体验,实现高效的Web应用交互。

    Ajax异步调用框架

    这个Ajax异步调用框架适用于简单的数据获取和页面局部更新,但现代Web开发中,更常见的是使用jQuery、axios、fetch等库来简化Ajax操作,它们提供了更友好的API和更好的兼容性。例如,jQuery的`$.ajax()`方法或者...

    Ajax简单异步调用

    Ajax(Asynchronous ...总之,Ajax简单异步调用是Web开发中的重要技术,它通过局部刷新和后台通信,实现了更加流畅和高效的用户交互体验。了解并熟练运用Ajax,对于提升网站或应用的性能和用户体验具有重要意义。

    aJax 异步调用

    **Ajax(Asynchronous JavaScript...总结,Ajax异步调用是现代Web开发中不可或缺的一部分,它通过提升用户体验和减少服务器负载,极大地推动了Web应用程序的发展。理解并熟练掌握Ajax技术,对于Web开发者来说至关重要。

    ASP.NET AJAX深入浅出系列课程(11):Microsoft AJAX Library中异步通信层使用

    在本课程"ASP.NET AJAX深入浅出系列课程(11):Microsoft AJAX Library中异步通信层使用"中,我们将重点探讨Microsoft AJAX Library中的异步通信层,它是实现页面无刷新更新的核心组件。 首先,我们要理解什么是AJAX...

    Ajax异步与同步方法封装的js文件

    调用方法:1 将下载好的Ajax js文件引用到页面 代码如下:&lt;script src &quot; js MyAjax js&quot; type &quot;text javascript&quot;&gt;&lt; script&gt; 2 调用方法:(1)异步: MyAjax &quot; 要调用的方法...

    Ajax异步调用

    在实际应用中,一个典型的Ajax异步调用流程可能如下: 1. **创建Ajax请求**:使用jQuery的`$.ajax()`函数设置请求参数,包括URL、类型(GET或POST)、是否异步等。 2. **发送请求**:调用请求函数,浏览器向服务器...

    ASP.NET AJAX深入浅出系列课程(12):Microsoft AJAX Library中异步通信层的扩展

    当用户触发一个操作,如点击按钮,AJAX框架会捕获该事件,然后通过异步调用服务器端的方法来处理请求,返回的结果将被无缝地插入到页面的指定位置,从而实现页面的部分刷新。 在本课程中,我们将深入学习如何利用...

    jqueryAjax_无刷新调用另一页实例

    在IT行业中,jQuery AJAX是一种广泛使用的前端技术,它允许网页在不进行页面整体刷新的情况下与服务器交换数据并更新部分网页内容。"jqueryAjax_无刷新调用另一页实例"这个标题意味着我们将探讨如何利用jQuery的AJAX...

    浅析异步调用的ppt

    【异步调用】是指在程序执行过程中,不等待某个操作完成就返回,而是通过某种机制(如回调函数或事件监听)在操作完成后通知调用者。这种机制能够提高系统的响应速度,尤其在处理耗时任务时,避免了阻塞用户界面。 ...

    使用Ajax实现页面表格添删改查的异步刷新操作

    在网页开发中,异步数据交互是提升用户体验的关键技术之一,AJAX(Asynchronous JavaScript and XML)正是实现这一目标的有效工具。"使用Ajax实现页面表格添删改查的异步刷新操作"是一个实用的技术实现,它允许用户...

Global site tag (gtag.js) - Google Analytics