我在jQuery中有以下Ajax代码,它使用save.php页面将数据从表单保存到MySQL数据库:
$('#frmSurvey').append("<input type='hidden' name='page' value='"+$page+"' />"); // NOTE: this is done before the submit.
document.frmSurvey.submit(); // There is some validation done and then the submit is called
var url = "save.php"; // the script where you handle the form input.
$.ajax({
type: "POST",
url: url,
data: $("#frmSurvey").serialize(), // serializes the form's elements.
success: function(data)
{
alert(data); // show response from the php script.
}
});
HTML:
<form id="frmSurvey" name="frmSurvey" action="save.php" method="post" onsubmit="return false">
希望一切都有意义。
我知道对save.php页面的Ajax调用意味着用户看不到页面,而是在后台发生。但是,save.php页面仍会在网址栏中显示一两秒钟 - 这是否正确 - 是否有任何方法可以阻止这种情况发生?
答案 0 :(得分:1)
导航到另一个URL的原因是因为您实际在使用document.frmSurvey.submit();
进行AJAX调用之前正在进行正确的表单提交 - 实际上这会阻止发生AJAX请求,因为导航到表单操作URL会停止从当前页面进行JS处理。
如果删除该行,您的表单将通过AJAX提交而不进行任何重定向。