尝试将数据从AJAX发布到Flask时获取NoneType

时间:2018-04-05 09:36:22

标签: javascript python jquery ajax flask

我正在尝试在模式中显示来自表用户的数据(在UI中通过JSON)并在同一模态上进行编辑,然后将更改提交到我的本地数据库。

  $("#users").on('click','.btnSelect',function(){ 
    var currentRow=$(this).closest("tr"); 
    var TableData = new Array();
     TableData={

    'Username': currentRow.find("td:eq(0)").text(), 
    'Email': currentRow.find("td:eq(1)").text(), 
    'Access': currentRow.find("td:eq(2)").text(),
    'ID': currentRow.find("td:eq(3)").text() 
    }
    console.log(JSON.stringify(TableData));

        var html='';


        html += '<form id="form" method="post" data-parsley-validate class="form-horizontal form-label-left">';          
        html += '<div class="form-group" >'; 
        html +='<label class="control-label col-md-3 col-sm-3 col-xs-12" for="username">Username<span class="required">*</span></label>';
        html +='<div class="col-md-6 col-sm-6 col-xs-12">';
        html +='<input type="text" name="username" class="form-control" id="usernameupdated" value="'+TableData.Username+'">';
        html +='</div>';
        html +='</div>';
        html += '<div class="form-group" >'; 
        html +='<label class="control-label col-md-3 col-sm-3 col-xs-12" for="email">Email<span class="required">*</span></label>';
        html +='<div class="col-md-6 col-sm-6 col-xs-12">';
        html +='<input type="text" name="email" class="form-control" id="emailupdated"value="'+TableData.Email+'">';
        html +='</div>';
        html +='</div>';
        html += '<div class="form-group" >'; 
        html +='<label class="control-label col-md-3 col-sm-3 col-xs-12" for="access">Access<span class="required">*</span></label>';
        html +='<div class="col-md-6 col-sm-6 col-xs-12">';
        html +='<input type="text" name="access" class="form-control" id="accessupdated" value="'+TableData.Access+'">';
        html +='</div>';
        html +='</div>';        
        html +='</form>';


        $('#save').on('click', function() {

            ID=TableData.ID;
            email = document.getElementById('emailupdated').value;
            username = document.getElementById('usernameupdated').value;
            access = document.getElementById('accessupdated').value;

            console.log(username)
            console.log(typeof(username))
            console.log(email)
            console.log(access)
            console.log(ID)


              $.ajax({
                type: 'POST',
                url: '/update',
                data: {
                  'username': username,
                  'email': email,
                  'access': access,
                  'ID': ID,
               },
                error: function(e) {
                console.log(e);
                }

            })


    });

   $('#myForm').html(html); 

});
@app.route('/update', methods=['POST'])
def updateuser():
    db = DB.DBLayer()
    dbsession = db.getSession()
    dbcursor = db.getCursor()
    list_Members=db.getMembers()
    list_customers=db.getCustomers()
    if request.method =='POST':
        newusername = request.args.get('username')

        newemail =request.args.get('email')

        newaccess = request.args.get('access')

        ID=request.args.get('ID')

        sql= 'UPDATE user SET username="'+newusername+'" and email="'+newemail+'" and access="'+newaccess+'" WHERE id="'+ID+'";'
        dbcursor.execute( sql)
    return render_template('success.html',list_Members=list_Members,list_customers=list_customers)

1 个答案:

答案 0 :(得分:0)

你应该使用JSON,你没有正确获取数据,这就是为什么newusernameNone

在您的AJAX中使用JSON.stringify

data : JSON.stringify({
                  'username': username,
                  'email': email,
                  'access': access,
                  'ID': ID,
               }),
contentType: 'application/json;charset=UTF-8',

在python中使用JSON加载数据:

import json
data_received = json.loads(request.data)

现在您可以使用数据:

print (data_received['username'])

为避免SQL注入,请使用paremtrized查询替换SQL。

sql = 'UPDATE user SET username = ?, email = ?, access = ? WHERE id = ?'
db.execute(sql, (data_received['username'], data_received['email'], data_received['access'], data_received['id']))