如果出现任何ajax错误,如何让ajax / jquery提交表单?
如果出现任何ajax错误,我希望定期提交页面加载php验证接管
如果我尝试更换' validateform.php'使用&x; xxxxtest.nothing',表单不提交,js抛出控制台错误" POST http://example.com/xxxxtest.nothing 404(Not Found)"
$('#myform').submit(function(e) {
var $theform = $(this);
$.ajax({
url: 'validateform.php',
type: 'POST',
cache: false,
timeout: 5000,
async: false,
data: $theform.serialize(),
success: function(data) {
$('#errordiv').html('<p class="error">' + data + '</p>');
$('#errordiv').slideDown();
},
error: function(e){
return true; // form should be submitted
}
});
return false;
});
答案 0 :(得分:1)
jQuery ajax函数是异步的,因此返回false始终是exectuted。所以,相反:
error: function(e){
$('#myform').unbind('submit').submit();
}
根据以下评论进行了更新。
JSFiddle:http://jsfiddle.net/9Q2L2/
答案 1 :(得分:0)
检查这是否适用于您: http://jsfiddle.net/don/9Q2L2/3/
创建第二个php文件以发送表单并运行此php文件,如果有任何ajax错误。
再次使用unbind
和submit
。
答案 2 :(得分:-1)
你应该尝试:
$('#myform').submit(function (event) {
var $theform = $(this);
$.ajax({
url: 'validateform.php',
type: 'POST',
cache: false,
timeout: 5000,
async: false,
data: $theform.serialize(),
success: function (data) {
$('#errordiv').html('<p class="error">' + data + '</p>');
$('#errordiv').slideDown();
//prevent submit
event.preventDefault();
},
error: function (event) {
//form is submitted
}
});
//None of them should be placed here, the code is always executed
//event.preventDefault();
//return false;
});