0

次のコードがあります。

<?PHP

  if (isset($_POST['submit'])) {
    header("Location: http://mysite.com");
  }

?>

<form name="form1" action="" method="post"> 
  Name: <input name="name" type="text"> 
  <input type="submit" value="submit" name="submit">
</form>

問題は、フォームを送信すると、mysite.com へのリダイレクトに 5 ~ 10 秒かかるということです。何かが起こっていることを知るために、「読み込み中...お待ちください」というメッセージをアニメーション画像で表示したいと思います。

javascript och ajaxでどうすればいいですか?

4

3 に答える 3

1

可能かどうかはわかりませんが(そうは思いません)、 exit(); を追加できます。ヘッダーを設定した後、残りのスクリプトは実行されず、ブラウザーに送信されません。そうすれば少しは時間短縮できます。

http ヘッダーの代わりに JavaScript を使用してリダイレクトを行うことができます。

<?php if (isset($_POST['submit'])): ?>
<script>
  alert('Loading... Please wait');
  document.location.href = 'http://mysite.com';
</script>
<?php endif; ?>
于 2012-05-31T08:56:24.497 に答える
0

このようなものが必要です。ローディングには、ajaxリクエストが終了するまで画像GIFが移動し、ローディングは非表示になり、結果にはデータベース結果グリッド検索が画面に表示されます

<tr valign="top">
        <td id="results" colspan="8" align="center" width="100%" height="250px">
    </td>
</tr>

<tr valign="top" id="loading" style="display:none;">
    <td colspan="8" width="100%" align="center">
      <img name="loading_image" src="images/loading.gif" border="0" width="214" height="200">
    </td>
</tr>


function search(tableEvent){
              try
              {

                  document.getElementById('loading').style.display="";

                  var params = 'formAction=' + document.mainForm.formAction.value;
                  params += '&tableEvent=' + tableEvent;
                  params += '&txtActionDivisionDesc=' + document.mainForm.txtActionDivisionDesc.value;

                  createXmlHttpObject();

                  sendRequestPost(http_request,'Controller',false,params);

                  ValidationResult();
              }
              catch(e)
              {

                  alert(e.message);
              }

          }


function ValidationResult()
          {
              try
              {
                  if (http_request.readyState == 4)
                  {
                      var errors = http_request.responseText;
                      errors = errors.replace(/[\n]/g, '');

                      if (window.ActiveXObject)
                      {// code for IE
                          xmlRecords=new ActiveXObject("Microsoft.XMLDOM");
                          xmlRecords.loadXML(errors);
                      }
                      else
                      {
                          xmlRecords=document.implementation.createDocument("","",null);
                          parser=new DOMParser();
                          xmlRecords=parser.parseFromString(errors,"text/xml");
                      }

                      document.getElementById('loading').style.display="none";

                      document.getElementById('results').innerHTML = errors;

                      http_request = false;
                  }
              }//end try
              catch(e)
              {
                  document.getElementById('results').innerHTML = errors;
                  return;
              }
          }
于 2012-05-31T09:01:11.740 に答える
0

ページの送信に 5 ~ 10 秒。まず、なぜそんなに時間がかかるのかを考えてみてください。

とにかく、送信ボタンを押したときにメッセージを表示したいだけの場合は、任意の div を追加できます (最初は hidden で)。送信ボタンをクリックすると、このdivを表示できます。

サンプル コードを参照してください。

<?PHP

  if (isset($_POST['submit'])) {
    header("Location: http://mysite.com");
  }

?>

 <div id='loadingDIV' style='display: none;'></div>

<form name="form1" action="" method="post"> 
  Name: <input name="name" type="text"> 
  <input type="submit" value="submit" name="submit" onclick='showLoadingAndSubmit();'>
</form>

    function showLoadingAndSubmit(){
        document.getElementById ('loadingDIV').innerHTML = 'Form submitting. Please wait...';
document.getElementById ('loadingDIV').style.display = 'block';
        return true;
    }
于 2012-05-31T09:04:34.767 に答える