@Stas_s

Не могу понять почему не работает у меня ajax во flask?

разбираюсь с ajax во flask, перерыл уже много в интернете всего, но не работает почему-то. Цель: отправить введённые данные от пользователя во фласк чтобы эти данные записались в нужное значение в словарь файла json. Но у меня не получается запустить почему-то ajax. Данные передаются только через request.form и после нажатия "записать" перезапускается страница, а ведь она не должна перезапускаться с ajax. Также надо передать вместе с введенными данными от пользователя, номер id строки из таблицы (она выводится в row[6], в которую он вводит данные. Люди добрые, подскажите пож, в первую очередь, где ошибка и что я не так делаю с ajax? а также пож подскажите, как передать id строки (row[6]) которая также передается с сервера из dataframe (она не должна быть видна пользователю )?
обработка отправки данных во flask
@app.route('/save/', methods=['POST', 'GET'])      # кнопка записи
def save():
    with open('index.txt') as json_file:
        data = json.load(json_file)

    mass = request.form['mass']
    row_id = request.form['row']

    for i in data:
        if i == row_id:
            data[i] = mass
    
    with open('index.txt', 'w') as outfile:
        json.dump(data, outfile)
 
    return render_template('index.html')


файл ajax save.js- он находится в папке static
$(document).ready (function () {
      $("#mass_btn").bind('click', function() {
        $. ajax ({
          url: '/',
          type: "POST",
          data: ({name: $("#mass").val()}),
          dataTape: "html",
          success: function () {
              $("#information").text('записано');
            }

        });
      });
  });


ссылка jquery из гугла вставлена в base.html
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script type="text/javascript" src="{{ url_for('static', filename='save.js') }}"></script>


а также index.html
{% extends "base.html" %}
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script type="text/javascript" src="{{ url_for('static', filename='save.js') }}"></script>

{% block content %}
    <h1>Авторизация, {{ current_user.username }}!</h1>


<form action="/upload/" method="POST">
    <input type="submit" class="btn btn-dark" value="Загрузить">
</form>

<table cellspacing="2" border="1" cellpadding="5">

    {% for index, row in df %}
    <tr>
        <td>{{ row[0] }}</td>
        <td>{{ row[1] }}</td>
        <td>{{ row[2] }}</td>
        <td>{{ row[3] }}</td>
        <td>{{ row[4] }}</td>
        <td>{{ row[5] }}</td>
        <td> row[6]
            <form action="/save/" method="POST" name="save" id="row" >
            <input id='mass' type="number" name="mass" />
            <input id='mass_btn' type="submit" value="Записать">
            </form>

        </td>
    </tr>
    {% endfor %}
</table>

{% endblock %}
  • Вопрос задан
  • 126 просмотров
Решения вопроса 1
Revencu
@Revencu
<input id='mass_btn' type="submit" value="Записать">

type="submit" перегружает твою страницу
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы