如何让JS在使用Ajax接收的HTML响应中执行?

如何让JS在使用Ajax接收的HTML响应中执行?

问题描述:

我有以下工作流程如何让JS在使用Ajax接收的HTML响应中执行?

  1. 格在页面上使用
  2. 上的用户操作请求完成 来其HTML是 用ajax retrived服务器端页面,并倒入 股利
  3. 与HTML标记一些JavaScript是 但也是倾倒,而不是 得到执行。

这是为什么?可能的解决办法是什么?

虽然我避免做这样的事情,但在一些旧的代码实现像这些很常见。

使用.innerHTML添加的脚本不会被执行,所以您将不得不处理这个自己。

一个简单的方法是提取脚本并执行

var response = "html\<script type=\"text/javascript\">alert(\"foo\");<\/script>html"; 
var reScript = /\<script.*?>(.*)<\/script>/mg; 
response = response.replace(reScript, function(m,m1) { 
    eval(m1); //will run alert("foo"); 
    return ""; 
}); 
alert(response); // will alert "htmlhtml" 

这将提取的脚本,执行它们与替换他们“”的原始数据。

+0

这看起来不错的方法......谢谢:) – 2010-06-02 06:04:29