jquery ajax调用时间太长或者什么的

我有一个表格,我希望确保Paypal电子邮件地址在我提交之前有效。 所以我正在进行这样的jquery提交调用

$('#new_user').submit(function(){ $.ajax({ type: 'post', url: "/validate_paypal", dataType: 'json', data: {email : $('#user_paypal_email').val()}, success: function( data ) { if (data.response["valid"] == false){ $('#user_paypal_email').closest('.field').addClass('fieldWithErrors'); $('#user_paypal_email').append('This is not a valid email address'); return false; }else{ return true; } } }); 

但问题是这个调用是一秒钟,并且页面已经在ajax完成之前刷新….如果我在调用结束时将返回false设置为false我可以看到我的json是正确的但由于某种原因我的方式它现在不会完成…任何关于如何纠正这一点的想法

只需在触发提交事件时使用preventDefault()。 然后等待来自paypal的响应,然后在表单上调用submit()。

 $('#new_user').submit(function(e){ e.preventDefault(); var form = $(this); //save reference to form $.ajax({ type: 'post', url: "/validate_paypal", dataType: 'json', data: {email : $('#user_paypal_email').val()}, success: function( data ) { if (data.response["valid"] == false){ $('#user_paypal_email').closest('.field').addClass('fieldWithErrors'); $('#user_paypal_email').append('This is not a valid email address'); return false; }else{ form.unbind('submit'); //remove binding form.submit(); //submit form } } }); 

如果您想立即执行某些操作,则需要在请求中设置async false