Я пытаюсь получить 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)