如果有任何Ajax错误,请提交表单

时间:2014-06-15 13:33:49

标签: javascript jquery ajax forms error-handling

如果出现任何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;

});

3 个答案:

答案 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错误。

再次使用unbindsubmit

答案 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;

});

More about preventDefault()