我有一个 html
表单,其数据通过 AJAX
帖子发送到 {{1} } 文件。
插入数据库后,我需要向用户显示他刚刚发送的数据已成功插入。
一切正常,但真正的问题是,页面刷新得如此之快,以至于我甚至无法看到消息的内容。
要考虑的事情:
php
调用之后,我对同一页面进行函数调用以刷新它,因为如果没有,页面就不会这样做。Ajax
表单中有一个<div>
,它是隐藏的,用于在服务器响应后取消隐藏。所以我有两个问题:
我留下了一些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页面,不会手动返回任何值,它只是获取数据并调用类来进行插入。
答案 0 :(得分:1)
首先,您在发送AJAX后立即刷新页面。 你应该在onreadystatechange函数监听器中移动刷新指令,这样在AJAX完成后就会发生,并且你有响应。
如果这没有帮助,您可以在显示消息和刷新之间添加一个小的时间延迟:
setTimeout(function(){window.location.href = '../Ui/WorkerForm.php';}, TIMEOUT_IN_MILISECONDS);