実行にかなり時間がかかる Javascript 関数があります。javascript 関数が戻るまで読み込みアイコンを表示したいのですが、関数の読み込み中はページに何も表示されません。ページは白く、何もしません。
Chrome を使用してデバッグすると、関数が呼び出される前に読み込みアイコンが表示され、呼び出されると消えます。Javascript を含む PHP ページに対して AJAX 呼び出しを実行できると思っていましたが、実際には AJAX 応答にその JavaScript が含まれています...
$.ajax({
type: "POST",
url: "resources/scripts/loadXML.php",
data: "datafile="data_file_path,
success: function(msg){
alert( "Data Saved: " + msg );
}
});
そして私はそれを取り戻します。MSG はこれと同じです (これは実際にはページ内のスクリプトです)。
<script type="text/javascript">
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET",<?php echo json_encode($data_file); ?>,false);
xmlhttp.send();
return xmlhttp;
</script>
ページを白くしたくないだけで、その機能が読み込まれますか...何かアイデアはありますか!?
編集:
このコードを非同期で実行して、ページをブロックしないようにします。この関数の実行中にスピナーを見たいです。以前は、この同じページにあったので、ファイルを開くように簡単に設定できましたが、非同期呼び出しを行う場合は、別のファイルに配置する必要があります。しかし、どうすればこのファイルにパラメータを渡すことができますか?!:
<script type="text/javascript">
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET",**$NEEDTOGETTHEFILENAME**,false);
xmlhttp.send();
return xmlhttp;
</script>