AJAXでページを取得しようとしていますが、そのページを取得し、Javascriptコードが含まれていると、実行されません。
なんで?
私のajaxページの簡単なコード:
<script type="text/javascript">
alert("Hello");
</script>
...そしてそれは実行されません。Google Maps APIを使用して、AJAXでマーカーを追加しようとしているので、マーカーを追加するたびに、新しいマーカーを取得するAJAXページを実行し、データベースに保存して、マーカーをマップに「動的に」追加する必要があります。
しかし、この方法では単一のjavascript関数を実行できないので、どうすればよいですか?
ページで事前に定義した関数は保護されていますか、それともプライベートですか?
**AJAX関数で更新**
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();
}
**Deukalionによるソリューション**
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();'」を作成するのではなく、スクリプト内でaddeventリスナーを追加する必要がありました。これにはaddEventListener( "change"、functionName、false)を追加する必要がありました。評価されているスクリプト内。