Маршрут Flask не получает вызов Ajax - решено

Я пытаюсь получить 2 входа из моей HTML-формы и отправить их на мой @app.route(/sell) с помощью Ajax. Я выполнил те же действия с другими маршрутами, используя тот же метод, и у меня никогда не было этой проблемы.

Это результат, который поможет вам лучше понять --› Изображение

Один вход - это имя, другой - номер. Любая идея, что я делаю неправильно? Любая помощь очень ценится.

HTML-форма

<form>
    <div class="one form-group">
        <select id="stockInput" name="symbol">
        {% for stock in stocks %} 
            <option value="{{ stock.symbol }}"> {{ stock.name }}
        {% endfor %}
        <option value="" selected disabled>Select stock</option>
    </div>

    <div class="one form-group">
        <input autocomplete="off" id="sharesInput" class="form-control" name="shares" type="number" min="1" placeholder="Number of shares">
    </div>

    <button id="sell" type="submit" class="btn btn-primary">Sell</button>
</form>

АЯКС вызов

<script>

$(document).ready(function(){

$('form').on('submit', function(event) {

        /* Ajax Call */
        $.ajax({
            data : {
                share : $('#stockInput').val(),
                quantity : $('#sharesInput').val()
            },
            type : 'POST',
            url : '/sell'
        })

        .done(function(data) { 
            if (data.error){

            }
            else {

            }
        });

        event.preventDefault(); 
    });
});

        </script>

ФЛЯГА

@app.route("/sell", methods=["GET", "POST"])
@login_required
def sell():
        #Sell shares of stock
    username = User.query.get(int(session["user_id"]))
        # Get all stocks as objects portfolio
    stocks = Portfolio.query.filter_by(username=username.username).all()


    # Iterate over the stocks list to append the information needed in index.html table
    for stock in stocks:
        symbol = str(stock.symbol)
        shares = int(stock.shares)
        name = lookup(symbol)["name"]
        price = lookup(symbol)["price"]
        change = lookup(symbol)["change"]
        total = shares * price
        stocks.name = name
        stocks.price = usd(price)
        stocks.total = usd(total)

    if request.method == 'POST':
        
        # Lookup stock and save it's info
        share = lookup(request.form.get("symbol"))
        # Get # of shares
        quantity = int(request.form.get("shares"))

        if not share:
            return error("Stock not found", 403)
        elif quantity < 1:
            return error("Please enter the number of shares", 403)
            ... more lines of code


        
    return render_template("sell.html", stocks=stocks)


person Flo    schedule 25.05.2021    source источник


Ответы (2)


Вы используете неправильные переменные здесь? Попробуй это

       # Lookup stock and save it's info
        share = lookup(request.form.get("share"))
        # Get # of shares
        quantity = int(request.form.get("quantity "))
person Andrew Clark    schedule 25.05.2021
comment
Хорошее наблюдение, это определенно было одной из проблем. Ценить это! - person Flo; 26.05.2021
comment
@Flo Я рад, что смог помочь тебе найти часть решения. Иногда, когда вы слишком долго смотрите на одну и ту же проблему, легко не заметить такие глупые ошибки! ваше здоровье - person Andrew Clark; 26.05.2021

Проблема решена!

Мой файл заголовка Ajax в html как-то исчез...

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>

Благодарю вас!

person Flo    schedule 25.05.2021