Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用包含的ajax页面xmlhttp中的javascript_Javascript_Ajax_Xmlhttprequest - Fatal编程技术网

无法使用包含的ajax页面xmlhttp中的javascript

无法使用包含的ajax页面xmlhttp中的javascript,javascript,ajax,xmlhttprequest,Javascript,Ajax,Xmlhttprequest,使用XMLhttpRequest实现了一点ajax,它取代了一个div,并按预期工作 但是我似乎无法让包含的ajax页面运行javascript。如何从包含的ajax页面运行javascript ie:mainpage.php有select表单,在select更改事件includepage.php被加载到页面上的一个div中,并根据在select框中选择的内容进行更改,这可以正常工作,正如使用xmlhttp所预期的那样,im遇到的问题是试图从包含的页面运行javascript,即:一个简单的al

使用XMLhttpRequest实现了一点ajax,它取代了一个div,并按预期工作

但是我似乎无法让包含的ajax页面运行javascript。如何从包含的ajax页面运行javascript

ie:mainpage.php有select表单,在select更改事件includepage.php被加载到页面上的一个div中,并根据在select框中选择的内容进行更改,这可以正常工作,正如使用xmlhttp所预期的那样,im遇到的问题是试图从包含的页面运行javascript,即:一个简单的alertbox


没有代码可以真正使用,也许这是一种标准行为,但我无法在其中找到任何信息,因此,如果您能从包含的ajax页面中找到任何关于如何运行javascript的帮助,以取代div,我将不胜感激。

您似乎对代码一无所知,对吗

所以我给你们举一个关于这个的例子

一页page1.aspx

有一个javascript函数调用abc()

现在您可以将此函数添加到主页面并添加uc(用户控制)

像这样调用这个函数

var aa=abc(

因此,abc将被称为


如果您有两个单独的页面,那么您也可以调用此函数,因为当JavaScript呈现到浏览器中时,它会基于您在页面上包含的文件而变得自负

当您通过
innerHTML
在内容中插入脚本时,浏览器不会运行这些脚本

如果希望它们运行,则需要在该内容中找到脚本,从中获取文本并将其插入新脚本中,然后将新脚本插入到文档中。只要脚本不需要使用
document.write()
,就可以正常运行,像jQuery这样的库在将HTML插入文档时会自动为您执行此操作

下面是它工作原理的基本演示:

//插入包含脚本的动态内容
//模拟ajax调用发生的情况
var s='Helloalert(“你好”);document.getElementById(“结果”).style.color=“红色”;
var obj=document.getElementById(“结果”);
obj.innerHTML=s;
//在该动态内容中查找脚本标记
var scripts=obj.getElementsByTagName(“脚本”);
//创建可以将脚本内容复制到的新脚本标记
//然后将新的脚本标记插入到文档中,以创建浏览器
//实际运行脚本
var head=document.getElementsByTagName(“head”)[0];
对于(var i=0;i
所以我假设,但它没有按预期工作,很抱歉我没有说清楚,我甚至不能在includedpage.php中调用mainpage.php中的where的js函数,但我想你是说要执行此操作必须使用usercontrol?所以我不能把我的javascript放在includedpage.php中,它必须在mainpage.php中的一个函数中,并通过usercontrol从includedpage.php调用?不,这不是必需的,但你可以通过usercontrol轻松做到这一点,也可以使用包含在两个页面中的javascript文件。下面的url对我来说很有意义:我无法理解你的意思抱歉。这对我不起作用,因为include.php页面上的javascript是动态的。重复的:由于您找到了自己的重复答案,您可以删除此问题,也可以将您的问题标记为另一个问题的重复。点击“关闭”,它会给你一个重复的选择。我真的无法理解这个答案,所以请在这里随意贡献…这就是重复问题的问题。有时候他们的答案并不总是那么好。我已经添加了一个解释它是如何工作的答案。谢谢大家,我现在明白发生了什么,现在它很容易修复。因此,本质上,我们正在清除所有的脚本标记,然后将它们放回原处,这就是我们得到的动态php变量,以及脚本中所需的这些变量,这是我在includedpage.php中拥有脚本的主要原因。我想我可能只是重写它,以使用jquery将是最好的选择?我混合使用jquery和javascript,到处都有代码,回到基础上来,我想,谢谢你的帮助。如果你已经有jquery,那么一定要使用它。jQuery
.html()
或任何基于html字符串的对象的jQuery构造都会自动为任何嵌入式脚本执行此操作。
// insert dynamic content that has a script in it
// simulate what's happening with your ajax call
var s = 'Hello<s' + 'cript>alert("Hello");  document.getElementById("result").style.color = "red";</s' + 'cript>';
var obj = document.getElementById("result");
obj.innerHTML = s;

// find the script tags in that dynamic content
var scripts = obj.getElementsByTagName("script");

// create new script tags that you can copy the script content over to
// and then insert the new script tags into the document to make the browser
// actually run the scripts
var head = document.getElementsByTagName("head")[0];
for (var i = 0; i < scripts.length; i++) {
    var oldScript = scripts[i].parentNode.removeChild(scripts[i]);
    var newScript = document.createElement("script");
    newScript.type = "text/javascript";
    newScript.textContent = oldScript.textContent;
    head.appendChild(newScript);
}