Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 烧瓶';s重定向(url#u for(';profile';)只在控制台上加载HTML,但实际上不重定向_Javascript_Jquery_Python_Redirect_Flask - Fatal编程技术网

Javascript 烧瓶';s重定向(url#u for(';profile';)只在控制台上加载HTML,但实际上不重定向

Javascript 烧瓶';s重定向(url#u for(';profile';)只在控制台上加载HTML,但实际上不重定向,javascript,jquery,python,redirect,flask,Javascript,Jquery,Python,Redirect,Flask,我在Flask应用程序中使用JavaScript以透明的方式处理一些用户输入。我通过以下途径处理登录网站的用户: @app.route('/login/', methods=['GET', 'POST']) def login_page(): if request.method == 'GET': return render_template('login.html') elif request.method == 'POST': user = [

我在Flask应用程序中使用JavaScript以透明的方式处理一些用户输入。我通过以下途径处理登录网站的用户:

@app.route('/login/', methods=['GET', 'POST'])
def login_page():
    if request.method == 'GET':
        return render_template('login.html')
    elif request.method == 'POST':
        user = []
        user.append(float(request.form['orgid']))
        passwd = generate_password_hash(request.form['passwd'])
        user.append(passwd)
        pw_hash = cursor.callfunc("IRUD.READ_PASSWORD_HASH", cx_Oracle.STRING, user)
        if check_password_hash(pw_hash, request.form['passwd']):
            session['userid'] = cursor.callfunc("IRUD.READ_USER_ID", cx_Oracle.NUMBER, [float(request.form['orgid'])])
            return redirect(url_for('profile'))
        else:
            return redirect(url_for('login_error'))
在login.html中,用户填写一些信息以登录,并使用JavaScript处理这些信息,代码如下:

$(document).ready(function(){
    $('#btnLogin').click(loginUser);
  });


function loginUser(){
    var oData={};
  oData.orgid=$('#matricula').val();
  oData.passwd=$('#passwd').val();

  $.ajax({
    url: '/login/',
    data: oData,
    type: 'POST',
    success: function(response){
      console.log('Success - Login!');
      console.log(response);
    },
    error: function(error){
      console.log('Error - Login!');
      console.log(error);
    }
  });
如果登录成功,我应该被重定向到由profile()方法处理的URL/配置文件。但是,此页面的HTML显示在web浏览器的控制台中,完全没有重定向

我在这个网站上读过一些关于jQuery如何使用的帖子,但是,我还没有找到解决我问题的答案

成功登录后,如何正确地将用户重定向到另一个网页

我将感谢你所能提供的任何帮助

更新

值得注意的是,如果我将
返回重定向(url\u for('profile'))
更改为更简单的
返回呈现模板('profile.html')
,html仍然只是加载到控制台中

更新2

或者,我认为另一种选择是只使用Flask处理所有页面,而不使用任何JavaScript控制器。我的Python代码现在如下所示:

@app.route('/login/', methods=['GET', 'POST'])
def login_page():
    if request.method == 'GET':
        return render_template('login.html')
    elif request.method == 'POST':
        user = []
        user.append(float(request.form['orgid']))
        passwd = generate_password_hash(request.form['passwd'])
        user.append(passwd)
        pw_hash = cursor.callfunc("IRUD.READ_PASSWORD_HASH", cx_Oracle.STRING, user)
        if check_password_hash(pw_hash, request.form['passwd']):
            session['userid'] = cursor.callfunc("IRUD.READ_USER_ID", cx_Oracle.NUMBER, [float(request.form['orgid'])])
            return render_template('profile.html', name=session['userid'])
        else:
            return render_template('error.html')
但是,在执行此操作时,我遇到以下错误:
POSThttp://127.0.0.1:5000/login/ 400(错误请求)

然后在Javascript文件中:

success: function(response) {
    if (response.redirect){
        window.location.href = response.redirect;
      }
   }

我也遇到了同样的问题,这就是我找到的解决办法。但我认为它可以优化。

当您收到
400(错误请求)
时,flask是否在控制台上记录任何错误?如果没有,请尝试在调试模式下运行,方法是设置app.debug=True其中app是您的Flask对象。@PrahladYeri,我有debug=True,但我没有获得任何其他详细信息。然而,我刚刚检查过:这与Flask如何使用
name
属性有关,而JavaScript使用
id
获取HTML元素的值。当然,这就是为什么必须在HTML输入标记中同时设置
name='matricula'
id='matricula'
(这样JavaScript和后端Flask应用程序都可以对其进行解密。您确定要这样做吗?另外,请确保对
float(request.form['orgid']
等值运行打印语句,以便您知道后端实际得到了什么。
success: function(response) {
    if (response.redirect){
        window.location.href = response.redirect;
      }
   }