在慢重定向上等待消息

时间:2012-05-31 08:44:27

标签: ajax submit message

我有以下代码:

<?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?

3 个答案:

答案 0 :(得分:1)

我不知道它是否可能(但我不这么认为),但你可以添加exit();设置标题后,脚本的其余部分不会被执行并发送到浏览器。这可以减少一点时间。

您可以尝试使用javascript而不是http标头进行重定向。

<?php if (isset($_POST['submit'])): ?>
<script>
  alert('Loading... Please wait');
  document.location.href = 'http://mysite.com';
</script>
<?php endif; ?>

答案 1 :(得分:0)

你应该有类似的东西 加载有图像GIF移动,直到ajax请求结束,然后加载变得隐藏 结果是在屏幕上搜索数据库结果网格

<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;
              }
          }

答案 2 :(得分:0)

提交页面5-10秒。首先要弄清楚为什么花费这么多时间。

ANyways,如果你只想在按下提交按钮时看到一些消息,那么只需添加任何div(最初隐藏)。点击提交按钮即可显示此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;
    }