不能使用包含ajax页面xmlhttp的javascript

时间:2014-03-10 03:47:18

标签: javascript ajax xmlhttprequest

使用XMLhttpRequest获得了一点ajax,它取代了div并按预期工作。

但我似乎无法获得包含的ajax页面来运行javascript。如何从包含的ajax页面运行javascript?

ie:mainpage.php有选择形式,在选择更改事件includepage.php被加载到页面上的div并根据选择框中选择的内容进行更改,这个工作正常并且按照预期使用xmlhttp,问题即时通讯正试图从包含的页面运行javascript,即:一个简单的警报框。

没有代码可以真正过去,也许这是一个标准的行为,但我找不到任何信息,所以任何帮助如何从一个包含的ajax页面中替换一个div运行javascript将非常感激。< / p>

2 个答案:

答案 0 :(得分:1)

您似乎对代码没有任何想法吗?

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

一页page1.aspx

有一个javascript函数调用abc()

现在您可以将此功能添加到主页面并添加uc(usercontrol)

并像这样调用此函数

var aa=abc();

所以abc将被称为

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

答案 1 :(得分:1)

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

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

以下是有关其工作原理的基本演示:http://jsfiddle.net/jfriend00/2tRQW/

// 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);
}