Php Ajax请求转到新页面而不是更新当前页面?
它以前工作过,我不记得做过任何改变。我有一个表单,它将信息发送到一个“正在处理”的php文件,应该会得到回复。相反,它只是转到“处理”php并在新页面上回显JSON数据。Jquery包含来自google的内容,表单页面和“流程”页面都在同一个目录中Php Ajax请求转到新页面而不是更新当前页面?,php,javascript,jquery,ajax,Php,Javascript,Jquery,Ajax,它以前工作过,我不记得做过任何改变。我有一个表单,它将信息发送到一个“正在处理”的php文件,应该会得到回复。相反,它只是转到“处理”php并在新页面上回显JSON数据。Jquery包含来自google的内容,表单页面和“流程”页面都在同一个目录中 $data = array( 'status' => $status, 'message' => $errorMsg ); echo json_encode($data); if ($status ==
$data = array(
'status' => $status,
'message' => $errorMsg
);
echo json_encode($data);
if ($status == "success"){
session_destroy();
}
exit();
因此,这就是它在所有处理结束时所做的(确保数据是好的,所有工作正常)。这是使用的javascript:
$(document).ready(function(){
$('#signupForm').submit(function(){
//various client side checks to keep form from submitting easy to see garbage
if($(this).data('formstatus') !== 'submitting'){
var responseMsg = $('#response');
responseMsg.hide()
.addClass('response-waiting')
.text('Signing Up...')
.fadeIn(200);
var dataString = //the data
$.ajax({
type: "POST",
url: "process.php",
data: dataString,
success: function(data) {
var responseData = jQuery.parseJSON(data),
messageClass = '';
switch(responseData.status){
case 'error':
messageClass = 'response-error';
break;
case 'success':
messageClass = 'response-success';
break;
}
responseMsg.fadeOut(200,function(){
$(this).removeClass('response-waiting')
.addClass(messageClass)
.text(responseData.message)
.fadeIn(200,function(){
setTimeout(function(){
responseMsg.fadeOut(200,function(){
$(this).removeClass(messageClass);
});
},5000);
});
});
}
});
}
return false;
});
})
如果有什么具体的我应该寻找,请让我知道,我会更新。Q就像我说的,我昨天让它工作了,我不记得做了什么更改,除了在顶部进行客户端检查,我知道这根本不重要。我假设您的表单操作是heading process.php,并且您在提交时没有返回false 应该是这样的
<form name='myForm' action='nonjspage.php' method='post' onsubmit='return false;'></form>
如果错误仍然存在,那么它不是您的表单,而是javascript中的错误。根据您使用的浏览器,会有一个错误控制台
在firefox中,您进入菜单->web开发者->web控制台
打开此页面后,重新加载页面并再次按下“提交”按钮,它将为您提供有关javascript错误的信息。解决此问题可能会有一些帮助 首先,建议不要使用return false来阻止通常的点击事件的发生 最好的做法是在函数顶部执行
preventDefault();
看
这将阻止表单提交,从而加载post页面,而不是执行ajax调用
第二个问题是,你有一个返回错误的呼叫,显然没有被击中。上面的修复程序将阻止表单提交,不管发生什么,但我猜在开始和返回false之间的代码中存在javascript错误。这将引发异常,因此永远不会调用return false。一旦安装了上述修复程序并停止重定向,请检查浏览器中的控制台是否存在异常
干杯我总是忘记检查网络控制台。它最终是一个不相关脚本中的错误,这就是为什么我没有看到它。它最终是一个不相关脚本中的错误,但感谢您提供的最佳实践。我会用它的。