我正在尝试在模式中显示来自表用户的数据(在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)
答案 0 :(得分:0)
你应该使用JSON,你没有正确获取数据,这就是为什么newusername
等None
。
在您的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']))