Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.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
使用Python Flask和jQuery删除Sqlite数据库中的行_Python_Jquery_Flask - Fatal编程技术网

使用Python Flask和jQuery删除Sqlite数据库中的行

使用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():

我不能让它工作。我只需要用户能够使用按钮删除表中的行。我不希望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():
    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只能用于非破坏性(即幂等)操作。有什么办法可以通过邮寄来完成吗?