使用Python Flask和jQuery删除Sqlite数据库中的行
我不能让它工作。我只需要用户能够使用按钮删除表中的行。我不希望UI重置或滚动,所以我通过jQuery使用ajax 在app.py中:使用Python Flask和jQuery删除Sqlite数据库中的行,python,jquery,flask,Python,Jquery,Flask,我不能让它工作。我只需要用户能够使用按钮删除表中的行。我不希望UI重置或滚动,所以我通过jQuery使用ajax 在app.py中: from flask import Flask from flask import Flask, render_template, request import sqlite3 app = Flask(__name__) @app.route("/") @app.route('/delete', methods=['POST']) def delete():
from flask import Flask
from flask import Flask, render_template, request
import sqlite3
app = Flask(__name__)
@app.route("/")
@app.route('/delete', methods=['POST'])
def delete():
con = sqlite3.connect('ships.db')
cur = con.cursor()
cur.execute('DELETE FROM `liners` WHERE liner_ip = "' + request.form['id'] + '"')
cur.commit()
con.close()
在index.html中:
$( document ).ready(function() {
$( 'a.delete' ).click( function( e ) {
e.preventDefault();
$.ajax({
url: '/delete',
data: $('form').serialize(),
type: 'POST',
success: function(response) {
console.log(response);
},
error: function(error) {
console.log(error);
}
});
});
});
<form action="/delete" method="post" role="form">
<input type="hidden" name="id" value="{{row['liner_ip']}}">
<a href="#" class="btn btn-danger delete">DELETE</a>
</form>
$(文档).ready(函数(){
$('a.delete')。单击(函数(e){
e、 预防默认值();
$.ajax({
url:“/delete”,
数据:$('form')。序列化(),
键入:“POST”,
成功:功能(响应){
控制台日志(响应);
},
错误:函数(错误){
console.log(错误);
}
});
});
});
该行不会被删除,响应代码为200。所以我不知道问题是什么。我可以确认表单已正确填充,并且已发出ajax请求
有人能给我指出这样做的示例吗?只需创建一个
输入
字段,而不是表单
。选择按钮后,ajax
可以发出GET
请求:
from flask import jsonify
@app.route("/")
@app.route('/delete')
def delete():
con = sqlite3.connect('ships.db')
cur = con.cursor()
cur.execute('DELETE FROM `liners` WHERE liner_ip = "' + request.args.get('id')+ '"')
cur.commit()
con.close()
return flask.jsonify({'success':"True"})
然后,在html
中:
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
</head>
<body>
<div class='wrapper'> <!--Need wrapper for anchoring button click -->
<input type="hidden" name="id" class='input_row' value="{{row['liner_ip']}}">
<button class='delete_row'>DELETE</button>
</div>
</body>
<script>
$(document).ready(function(){
$('.wrapper').on('click', '.delete_row', function(){
var val = $('.input_row').val();
$.ajax({
url: "/suggestions",
type: "get",
data: {id: val},
success: function(response) {
$('.input_row').val('');
},
});
});
});
</script>
</html>
删除
$(文档).ready(函数(){
$('.wrapper')。在('click','delete_row',function()上{
var val=$('.input_row').val();
$.ajax({
url:“/建议”,
键入:“获取”,
数据:{id:val},
成功:功能(响应){
$('.input_row').val('');
},
});
});
});
谢谢Ajax1234,但是使用HTTP GET作为删除函数是一种反模式。GET只能用于非破坏性(即幂等)操作。有什么办法可以通过邮寄来完成吗?