在处理另一个ajax请求后调用ajax请求

时间:2018-01-16 19:11:49

标签: javascript python ajax flask

用户按下站点上的按钮,此时ajax请求启动,而服务器返回True或False。如果结果为True,则要处理另一个ajax请求,但我什么都没得到(我猜在ajax中)。

这是我的js代码:

document.getElementById('next_in').onclick = function (){

    $.ajax({
        data: {
            login: document.getElementById('log').value,
            password: document.getElementById('pass').value
        },
        type: 'POST',
        url: '/user_login',
        success: function (localRes) {
            if(localRes.result==true){
                $.ajax({
                    data: {
                        login: document.getElementById('log').value
                    },
                    type: 'POST',
                    url: '/private',
                    success: function () {
                        alert('Connected')
                    },
                    error: function () {
                        alert('There is a mistake!')
                    }

                });
            }
            else{
                alert('Incorrect login or password!');
            }
        }
    });
}

和python代码:

@app.route('/private', methods=['POST'])
def private():
   return render_template("rates.html")

然后在网站上按下按钮后,我收到了“已连接”,但随后(我认为此事件调用了我的python函数)没有重定向到rates.html ......

我不明白这里有什么问题..

请。我希望能够了解哪一方面的问题以及如何解决这个问题?

谢谢!

编辑一个

我确实缩短了我的python函数以显示问题。在return render_template("rates.html")之前的实际情况中,存在巨大的进程(对数据库的请求,一些计算等),因此python函数是:

@app.route('/private', methods=['POST'])
    def private():
       # ******************** HUGE processing
       return render_template("rates.html")

抱歉,如果我困惑了你,但简单的重定向到.html不是我想要的。我想在嵌套的ajax请求中调用python函数。

1 个答案:

答案 0 :(得分:1)

当您使用AJAX请求时,浏览器不会自动重定向您,也不会显示您的请求返回的任何内容。

如果rates.html是完整的HTML网页,请从

更改内部回调
success: function () {
  alert('Connected')
},

到此:

success: function(data) {
  document.body.innerHTML = data;
},

从服务器(你的python代码)获取响应,然后用它做一些事情(在这种情况下在浏览器上呈现它)。