/ / Wykonywanie ajax z Python Flask - javascript, jquery, python, ajax, flask

Wykonywanie ajax z Python Flask - javascript, jquery, python, ajax, kolby

Próbuję zrobić coś prostego, ale nie jestem w staniewymyśl to, ponieważ nie masz doświadczenia w pracy z językami skryptowymi, a nawet po przejściu kilku samouczków. Najbliższe dopasowanie do tego, co chcę zrobić, znajduje się w tym połączyć .

Gdy ktoś kliknie poniższy link, chcę, aby atrybut wartości został zwrócony do tego samego szablonu, w którym znajduje się ten link, który tworzę, aby móc go użyć jako argumentu indeksu tablicy.

<a href="/disable?server={{count + loop.index0}}"
id="serverCount"
value="{{ count + loop.index0 }}">
Click this to Disable </a>

JavaScript / json / ajax mam:

{% block scripts %}
{{ super() }}
<script type=text/javascript>
$(function() {
$("a#serverCount").bind("click", function() {
$.getJSON("/disable", {
a: document.getElementById("serverCount").getAttribute("value")
}, function(data) {
$("#result").text(data.result);
});
return false;
});
});
</script>
{% endblock %}

Jestem pewien, że ktoś zda sobie sprawę, że to, co mam, zdecydowanie nie działa. Po prostu publikuję kod, z którym eksperymentowałem.

W app.py mam:

@app.route("/disable", methods=["GET", "POST"])
def disableBtn():
valueOfButton = request.args.get["serverCount"]
return jsonify(result = valueOfButton)

Czy ktoś może wyjaśnić, jaki będzie właściwy sposób? Bardzo mile widziane.

Odpowiedzi:

2 dla odpowiedzi № 1

Skoro już używasz jQuery, dlaczego nie skorzystać z prostego sposobu uzyskania wartości jQuery?

$("#serverCount").val();

Tak więc zazwyczaj, gdy wykonuję wywołanie ajax, gdzie oczekuję danych JSON z powrotem i wysyłam JSON na serwer. Zrobiłbym coś takiego;

$(function() {
$("a#serverCount").bind("click", function() {
$.ajax({
method: "POST",
url: "/url/to/your/server/method",
dataType: "json",
data: { serverCount: $("#serverCount").val() }
})
.done(function(msgBackFromServer) {
alert("Data Sent to server" + msgBackFromServer);
});
});
});

teraz zauważysz, że adres URL musi być metodąktóre można trafić na twój serwer, jakiś rodzaj lub widok strony, który masz. Nie znam Flask, ale wyobrażam sobie, że pod pewnymi względami jest podobny do Django.

Metoda POST polega na tym, że wysyłane dane. Na serwerze flask powinno być możliwe otrzymanie JSON i parsowanie go w słowniku Pythona (a może jest jakieś inne narzędzie specyficzne dla flask).

Twoja odpowiedź z tego widoku jest przekazywanapowrót do funkcji .done wywołania ajax. Mogą to być dowolne dane, jakie chcesz. Będzie pochodził z kolby. Jestem pewien, że kolba może odesłać go jako obiekt JSON lub może to być po prostu ciąg znaków. Jeśli jest to obiekt JSON, można uzyskać dostęp do różnych jego części za pomocą. notacja. Coś jak msgBackFromServer.title lub msgBackFromServer.message itp ...


1 dla odpowiedzi nr 2

To nie jest AJAX. Wygląda na to, że próbujesz dokonać edycji javascript za pomocą JINJA i wysłać javascript do klienta. Nie rób tego. Zamiast tego pliki javascript powinny być statyczne i powinieneś zażądać samych danych z aplikacji flask.