在Ajax加载页面后执行JavaScript脚本-不起作用

我正在尝试使用AJAX创建一个页面,但是当我获得该页面并且它包含Javascript代码时,它不会执行。

为什么?

我的ajax页面中的简单代码:

<script type="text/javascript">

alert("Hello");

</script>

…并且它不执行它。我正在尝试使用Google Maps

API并通过AJAX添加标记,因此,每添加一个标记,我都会执行一个AJAX页面,该页面将获取新标记,并将其存储在数据库中,并应将标记“动态”添加到地图中。

但是,由于我无法以这种方式执行单个javascript函数,该怎么办?

我在页面上定义的函数是预先保护的还是私有的?

function ajaxExecute(id, link, query)

{

if (query != null)

{

query = query.replace("amp;", "");

}

if (window.XMLHttpRequest)

{

// code for IE7+, Firefox, Chrome, Opera, Safari

xmlhttp=new XMLHttpRequest();

}

else

{

// code for IE6, IE5

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

}

xmlhttp.onreadystatechange=function()

{

if (xmlhttp.readyState==4 && xmlhttp.status==200)

{

if (id != null)

{

document.getElementById(id).innerHTML=xmlhttp.responseText;

}

}

}

if (query == null)

{

xmlhttp.open("GET",link,true);

}

else

{

if (query.substr(0, 1) != "?")

{

xmlhttp.open("GET",link+"?"+query,true);

}

else

{

xmlhttp.open("GET",link+query,true);

}

}

xmlhttp.send();

}

var content = xmlhttp.responseText;

if (id != null)

{

document.getElementById(id).innerHTML=content;

var script = content.match("<script[^>]*>[^<]*</script>");

if (script != null)

{

script = script.toString().replace('<script type="text/javascript">', '');

script = script.replace('</script>', '');

eval(script);

}

}

在某些事件上,我不得不在脚本中添加事件侦听器,而不仅仅是执行“ select onchange

=’executeFunctionNotIncludedInAjaxFile();’“我必须为此添加addEventListener(”

change“,functionName,false)。在正在评估的脚本中。

回答:

当通过执行将容器的innerHTML内容设置为某些更新的内容来更新页面时,浏览器根本不会在其中运行脚本。您可以找到<script>标签,获取标签innerHTML(IE可能更喜欢innerTEXT),然后eval()自己编写脚本(这与jQuery差不多,尽管jQuery在更新DOM之前使用了正则表达式来查找脚本)。

以上是 在Ajax加载页面后执行JavaScript脚本-不起作用 的全部内容, 来源链接: utcz.com/qa/427097.html

回到顶部