Удалить строку в базе данных Sqlite с помощью Python Flask и jQuery - PullRequest
0 голосов
/ 13 ноября 2018

Я не могу заставить это работать. Мне просто нужно, чтобы пользователи могли удалять строки в таблице с помощью кнопки. Я не хочу, чтобы пользовательский интерфейс сбрасывал или прокручивал, поэтому я использую ajax через jQuery.

В 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>

Строка не удаляется, а код ответа 200. Поэтому я не знаю, в чем проблема. Я могу подтвердить, что форма заполнена правильно и сделан запрос ajax.

Может кто-нибудь указать мне образец, который делает это?

1 Ответ

0 голосов
/ 13 ноября 2018

Вместо form просто создайте поле input.Когда кнопка выбрана, 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...