Ajax调用后显示成功消息的问题

时间:2016-02-18 16:47:52

标签: javascript php html ajax

我有一个 html 表单,其数据通过 AJAX 帖子发送到 {{1} } 文件。

插入数据库后,我需要向用户显示他刚刚发送的数据已成功插入。

一切正常,但真正的问题是,页面刷新得如此之快,以至于我甚至无法看到消息的内容。

要考虑的事情:

  1. php 调用之后,我对同一页面进行函数调用以刷新它,因为如果没有,页面就不会这样做。
  2. 我的 Ajax 表单中有一个<div>,它是隐藏的,用于在服务器响应后取消隐藏。
  3. 所以我有两个问题:

    1. 首先,我是怎么做的,还有更好的方法吗?
    2. 刷新页面后是否可以使消息持久化?
    3. 我留下了一些JS代码(为了使其简短,因为一切正常),以及包含div的html部分:

      html

      HTML:

      $('#MiForm').on('submit', function( event )
      {
         //Creating the necessary instances and data
         //Here is where I put different messages for the div "alert"
      
         xhttp.onreadystatechange = function()
        {  //Response from the server.
            if (xhttp.readyState < 4)
            {// Waiting response from server.
                document.getElementById('Alert').hidden = false;    
                document.getElementById('Alert').innerHTML = "Sending Request...";
            }
            else if (xhttp.readyState === 4) 
            {// 4 = Response from server has been loaded
                if (xhttp.status == 200 && xhttp.status < 300)  // (200-299) is succesful.
                   document.getElementById('Alerta').innerHTML = 'Everything OK!';
            }
         };
         //the Send function and data. 
      
         event.preventDefault(); //-->preventing the submit of the normal form cause I use AJAX.
      
         window.location.href = '../Ui/WorkerForm.php' //--->this is where I load the same page where Im on, but it seems that it does it too fast.
        }); 
      

      还有一件事,我发送数据的php页面,不会手动返回任何值,它只是获取数据并调用类来进行插入。

1 个答案:

答案 0 :(得分:1)

首先,您在发送AJAX后立即刷新页面。 你应该在onreadystatechange函数监听器中移动刷新指令,这样在AJAX完成后就会发生,并且你有响应。

如果这没有帮助,您可以在显示消息和刷新之间添加一个小的时间延迟:

setTimeout(function(){window.location.href = '../Ui/WorkerForm.php';}, TIMEOUT_IN_MILISECONDS);