求助关于ajax中success不执行的问题

我用Flask实现邮箱注册功能的时候 在我的ajax函数里面的success一直执行不进去 除非我加上async: false;取消异步 不然success函数就一直进不去 那个验证码发送成功也一直弹不出来

下面是javascript代码

(success进不去 但是验证码确实是发送成功了的 我在邮箱有收到)

function bindCaptchaBtnClick(){
    $("#captcha-btn").on("click",function (event){
        var $this = $(this);
        var email = $("input[name='email']").val();
        if(!email)
        {
            alert("请先输入邮箱!");
            return;
        }
        //ajax网络请求
        $.ajax({
            url: "/user/captcha",
            method: "POST",
            data: {
                "email": email
            },
            // async: false,
            success: function (res) {
                var code = res['code'];
                if(code == 200){
                    $this.off("click");
                    var countDown = 60;
                    var timer = setInterval(function (){
                        countDown-=1;
                        if(countDown>0)
                        {
                            $this.text(countDown+"秒后重新发送");
                        }else{
                            $this.text("获取验证码");
                            //重新执行函数绑定事件
                            bindCaptchaBtnClick();
                            // 不需要倒计时 要清除
                            clearInterval(timer);
                        }
                    }, 1000);
                    alert("验证码发送成功!");
                }else{
                    alert(res["message"]);
                }
            }
        });
    });
}
// 等网页所有元素加载完后再执行
$(function (){
    bindCaptchaBtnClick();
})

谢谢各位大佬了!

javascript·flask·ajax
194 views
Comments
登录后评论
Sign In
·

加个 error 打印一下数据,success 加个 console 语句看看卡在哪一步,把 res 打印出来

·

你服务端那侧,有没有加200的状态码?

·

https://www.mianshigee.com/question/108581jzo/ 可以看下这里的讨论

·

chrome 按 f12 打开开发面板,看一下请求的返回数据,有没 200 返回码。加个打印:

success: function (res) {
    console.log('result', res);
    // ...
}
·

放弃python 转 nodejs

·

问题已经解决 虽然我不是很懂ajax和js 但是我观察到bootstrap的form下面的按钮点击之后就会刷新页面 但是在ajax的异步传输还未完成验证时,页面已经被刷新了 所以我看不到alert("验证码发送成功");