なしで試してくださいeval()
:
var xmlhttp;
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){
/*var reScript = /\<script.*?>(.*)<\/script>/mg;
response = xmlhttp.responseText.replace(reScript, function(m,m1) {
eval(m1);
return "";
});*/
document.getElementById("div").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open('GET','file2.php',true);
//xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded'); //unnecessary for GET calls
xmlhttp.send(null);
Eval
内でコードを使用する必要はありません。JavaScript コード<script...></script>
は、DOM に追加されるとすぐに実行されます。
新しい編集:
\n\r
スクリプトを適切に使用するには、reponseTextの改行を削除する必要がありeval
ます。また、コードを壊してい\
た最初のエスケープ文字の前に余分なエスケープ文字がありました。<
試す:
var xmlhttp;
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){
var reScript = /<script.*?>(.*)<\/script>/mg;
response = xmlhttp.responseText.replace(/\n|\r/g, " ").replace(reScript, function(m,m1) {
eval(m1);
return "";
});
document.getElementById("div").innerHTML=response;
}
}
xmlhttp.open('GET','file2.php',true);
//xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xmlhttp.send(null);
.replace(/\n|\r/g, " ")
内のすべての改行を空白に置き換えるために を追加しました。responseText
これにより、JS が適切に評価され、エンドユーザーに目に見える変化が生じません。すべての JS が適切にセミコロン化されている場合は" "
、空白を空の文字列に置き換えることもできます。""
ページの に JQuery lib を含めると、上記は単純なスクリプトでうまく機能するはずですhead
。
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
AJAX 呼び出しは次のように単純です。
<script type="text/javascript">
$(document).ready(function(){
$('#div').load('file2.php');
});
</script>
リンクされた回答に記載されているように、JQuery は responseText からスクリプトを自動的に解析します。