問題を説明するのに苦労しているので、少しずつ説明します。不明な点がありましたらご容赦ください。
問題:インクルードされたファイルにあるdivを更新しようとしています:
div id ='home'のindex.phpページがあります(適切なjqueryファイルはすべてindex.phpのheadセクションで呼び出されます。index.phpページには次のjavascriptトリガーがあります。
<a href="javascript: MyAjaxRequest('home','random2.php')">Random Number times 10</a>
これにより、div id='home'のリロードがトリガーされます。div id ='home'を以下に示します(ヘッダーの目的がわかりません-ヘッダーありとなしで試しました):
<div id='home'>
<?php
header("Content-Type: text/html; charset=ISO-8859-15");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
?>
<script type="text/javascript">
function homeloader(){
var xmlHttp;
try{
xmlHttp=new XMLHttpRequest();// Firefox, Opera 8.0+, Safari
}
catch (e){
try{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); // Internet Explorer
}
catch (e){
try{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e){
alert("No AJAX");
return false;
}
}
}
xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4){
document.getElementById('homeload').innerHTML=xmlHttp.responseText;
setTimeout('homeloader()',10000); // JavaScript function calls AutoRefresh() every 10 seconds
}
}
xmlHttp.open("GET","random.php",true);
xmlHttp.send(null);
}
homeloader();
</script>
<div id='homeload'>
<font size='1em'>
Random Number:
<?php
include "random.php";
?>
</font>
</div>
</div>
ajaxは、sub div id ='homeload'のコンテンツを、random.php(この投稿の下部にある単純な乱数ジェネレーター)の結果で更新することになっています。
今、トラブルが始まります。
上記のhref='javascript...が起動されると、random2.phpをdiv id ='home'にロードする必要があります(random3.phpと別のajax関数が含まれています-キーワードが変更された同じ関数です(キャッチを残してみました( e)そして以下のように(f)をキャッチするように変更します)これにはrandom3.phpが含まれていますが、random2.phpのajaxはsub div id ='homeload2'もrandom3.phpの結果で更新する必要があります( 't)。random3.phpが含まれていますが、更新されません。
これがrandom2.phpです(ここでも、ヘッダーが何のためにあるのかわかりません-それらはajaxに付属しています-私はそれらの有無にかかわらず試しました):
<?php
header("Content-Type: text/html; charset=ISO-8859-15");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
?>
<script type="text/javascript">
function homeload2(){
var xmlHttp2;
try{
xmlHttp2=new XMLHttpRequest();// Firefox, Opera 8.0+, Safari
}
catch (f){
try{
xmlHttp2=new ActiveXObject("Msxml2.XMLHTTP"); // Internet Explorer
}
catch (f){
try{
xmlHttp2=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (f){
alert("No AJAX");
return false;
}
}
}
xmlHttp2.onreadystatechange=function(){
if(xmlHttp2.readyState==4){
document.getElementById('homeload2').innerHTML=xmlHttp2.responseText;
setTimeout('homeload2()',10000); // JavaScript function calls AutoRefresh() every 10 seconds
}
}
xmlHttp2.open("GET","random3.php",true);
xmlHttp2.send(null);
}
homeload2();
</script>
<div id='homeload2'>
<font size='1em'>
Random Number times 10:
<?php
include "random3.php";
?>
</font>
</div>
最後に、random.phpの簡単なコードを示します。
<?php
$c = rand(1,10);
echo $c;
?>
およびrandom3.php:
<?php
$c2 = rand(1,10);
$c3 = $c2*10;
echo $c3;
?>
したがって、問題は、random2.phpがrandom2.phpをdiv id='home'に含めることになっていることです。します。ただし、random2.phpのajaxは、sub div id='homeload2'をrandom3.phpの結果で更新する必要があります。そうではありません。
random3.phpが含まれていますが、div id='homeload2'は更新されません。
(ブラウザにファイルをロードするだけで)random2.phpを単独でテストしましたが、正常に更新されます。テストサーバーとデプロイメントサーバーでも試してみました。どちらの場合も、ファイルがソロでロードされると更新されますが、上記のコンテキストで(インクルードファイルとして)ロードされると、インクルードとしてロードされますが、更新されません。
私はajaxを初めて使用し、このコードをチュートリアルから外しました(同じコードをいくつかの場所で見ました)。また、他のajaxテクニック(同じ目的のための他の定式化)を試しましたが、同じ結果が得られました-インクルードロードですが、更新されません。違いが出るとは思いませんでしたが、require-を使ってみましたが無駄になりました。ライブラリ呼び出し(src = ... jquery ...)をrandom2.phpに挿入しようとしましたが、それは役に立ちませんでした。
私はページを広範囲に分析して検査しようとしたので、いくつかのタイプミスを除いて(私のテストではそうではないことを示唆しています、2回目の更新を試みることによって破っている基本的なルールがあると思いますが、私は見ることができませんそれが問題です。2番目の関数が妨げられるのはなぜですか?javascript hrefを介して含まれているときに、関数が実際に読み込まれないことについて何かありますか?ヘッダーなどについて何かありますか?
スクリプトにはいくつかのphpヘッダーコマンド(上記)も含まれていますが、これは私にはわかりませんが、それが問題であるかどうかを確認するために削除してみました。変わりはない。
random2、phpのajax関数は、インクルードされたファイル(random2.php)に配置されているため、何らかの形で壊れていると結論付けることしかできません。私の控除はどこかで間違った方向に進んだと確信していますが、どこですか?
私は解決策についてかなりの量の調査を行いましたが、私の問題は、より多くの情報を取得するためにグーグル検索クエリを定式化する方法が本当にわからないことです。私の特定のパズル。「div2を更新する方法には、次の行が含まれます」?
だから私はここに投稿しています。
私が見逃している根本的な何かがあると確信しています。
誰か助けていただければ幸いです。前もって感謝します。