当前位置:首页 > 网页设计 >Javascript >

ajax提交表单为什么return false却依然提交

发布时间:2018-02-02 12:49:11 作者:佚名 阅读:(243)

问题原因:
1. ajax时return false 的function与onsubmit()不是同一个函数;
2. 在ajax执行时,async默认的设置值为true,这种情况为异步方式,就是说当ajax发送请求后,在等待server端返回的这个过程中,前台会继续 执行ajax块后面的脚本,直到server端返回正确的结果才会去执行success,也就是说这时候执行的是两个线程,ajax块发出请求后一个线程 和ajax块后面的脚本(另一个线程)。
原因:逻辑没弄清楚,要将ajax设置为同步的,需要使用$.ajax,$.get默认是异步的,并且不是在回调函数内return,而是在checkForm函数外声明一个变量来接受回调函数的返回值,然后checkForm返回这个值。

var chaxun = false;
function checkForm() {
    var oid = document.login.oid.value;
    var _checks = '0';
    if (oid == "" || !$.IsNumber(oid)) {
        tips_box('订单号不正确,请仔细3阅读订单查询教程!');
        document.login.oid.focus();
        return false;
    } else {
        var check_order = "/sm/bzsm/checkOrder.html";
        $.ajax({
            async: false,
            url: check_order,
            data: {
                order_id: oid,
            }, //参数值
            type: "POST", //请求方式
            success: function (req) {
                var req = eval('(' + req + ')');
                if (req.code == '2') {
                    tips_box('订单号不正确,请仔细阅读订单查询教程!');
                    document.login.oid.focus();
                    return false;
                } else {
                    chaxun = true
                    return false;
                }
            },
        });
    }
    if (!chaxun) {
        return false;
    }
}

欢迎分享转载→ ajax提交表单为什么return false却依然提交

© 2015-2021 - 吾爱编程网 版权所有 苏ICP备18033726号-1关于我们 - 网站声明 - 联系我们