jQuery表单提交返回false而不是等待服务器响应
jQuery form submission is returning false instead of waiting for server response
我有一个jQuery表单,它在验证后将数据发送到服务器。服务器发送一个响应,然后我的站点处理返回的信息。下面是问题中的javascript:
$("#signup").on('submit', function(e){
var isvalidate = $("#signup").valid();
if(isvalidate)
{
var json = $('#signup').serialize();
var theEmail = $('#signup #inputEmail').val();
//Hide step 1 modal
$('#stepOneSignup').modal('hide');
//Open processing modal
$('#processingModal').modal();
$.post('http://localhost:5000/agm/saveNewUser/', json, function( data ) {
alert('returned some data');
if(data === "Success"){
//Hide processing modal
$('#processingModal').modal('hide');
}else if(data === "UserExists"){
$('#processingModal').modal('hide');
$('#duplicateEmail').modal();
}
});
}else{
return false;
}
});
我可以在我的服务器日志中看到$.post(http://localhost...)
发布得很好。我的服务器正在处理表单信息(这需要几秒钟),但在它有机会发送响应之前,我的表单将浏览器重定向到:
http://localhost:8888/?firtName=whateverinfoIputintheform&lastName=yeahyeahyeah
我从来没有得到一个alert('returned some data');
。
你知道这是怎么回事吗?
我认为你的ajax调用是异步的。试着做点什么:用下面的代码替换ajax调用:
$.ajax({
type: "POST",
url: 'http://localhost:5000/agm/saveNewUser/',
data: json,
dataType: 'text',
async: 'false',
success: function(){
alert('returned some data');
if(data === "Success"){
//Hide processing modal
$('#processingModal').modal('hide');
}else if(data === "UserExists"){
$('#processingModal').modal('hide');
$('#duplicateEmail').modal();
}
}
});
和
return true;
您应该在任何情况下return false
,以防止默认的post-back:
$("#signup").on('submit', function(e){
var isvalidate = $("#signup").valid();
if(isvalidate)
{
...
}
return false;
});
它正在引起ajax post请求,但不能处理它的响应,因为默认的post-back原因在ajax post的响应被接收之前。
$.post()
是一个ajax方法。浏览器将不会等待响应,并将继续工作,就好像服务器从未发出请求一样。
$.post('http://localhost:5000/agm/saveNewUser/', json, function( data ) {
...
}).done(function(){
return true;
});
相关文章:
- 如何在等待php客户端脚本的回复时终止php服务器脚本
- 服务器等待响应时的Jquery加载程序
- 正在等待服务器上发生事件
- 节点,SSh2服务器正在等待输入
- 服务器重新启动时显示等待页面
- XMLHttpRequest 状态 2 等待来自服务器的响应
- 在页面等待服务器时加载 CSS 和 JS
- 咕噜咕噜的任务 - 等待服务器(selendroid)准备就绪
- 从php启动phantomjs服务器并等待它的响应
- 服务器是否可以强制浏览器等待而不更改网页代码
- Meteor,错误:没有光纤在服务器上使用 Meteor.setTimeout() 就无法等待
- 在jQuery中,有一种方法可以在数组上循环,这样在循环到下一个循环之前,它首先等待来自服务器的响应
- 在“服务器”上等待EmberJS中的属性;的一面
- Node.js:服务器等待响应和超时
- Angularjs需要等待服务器的响应,类似于回调
- 客户端等待服务器承诺解决
- 我在客户端和服务器端都实现了xdomain脚本,但在IE9中不断获得'超时等待iframe套接字'警告
- 是否可以在浏览器中使用websockets等待服务器
- jQuery表单提交返回false而不是等待服务器响应
- jQuery promise .done()会立即触发,而不是等待服务器返回