Как передать массив javascript скрипту python с помощью flask [используя пример flask]
Я пытаюсь получить пример колбы/jquery/ajax работа для моего конкретного случая, но я не хватает каждый раз. Я знаю, что такой вопрос задавался несколько раз, но ответы мне не помогают (Да, я новичок в этом).
в Примере передается строка из javascript в python. Я хотел бы передать массив. Интернет предполагает, что это возможно. Вот что у меня есть:
HTML / колба Шаблон:
{% extends "layout.html" %}
{% block title %}Test{% endblock %}
{% block content %}
<div>
<h1>Flask Jquery Test</h1>
<div>
<input type="button" value="Transfer" id="button" />
</div>
<div>
Wordlist<br />
<select multiple="multiple" id="wordlist" size="5">
<option>Volvo</option>
<option>Audi</option>
<option>BMW</option>
<option>Mercedes</option>
<option>Toyota</option>
</select>
<span id="result"></span>
</div>
</div>
{% endblock %}
JS Script:
$(document).ready(function() {
$("#button").bind('click', function(){
//Get all words from list
var list = [];
$("#wordlist option").each(function(){
list.push($(this).val());
});
//var list = $( "#wordlist option" ).val();
console.log(list);
$.getJSON($SCRIPT_ROOT + '/_array2python', {
wordlist: list.toString()
}, function(data){
console.log(data.result)
$( "#result" ).text(data.result);
});
return false;
});
});
Python:
@app.route('/')
def start_page():
return render_template('index.html')
@app.route('/_array2python')
def array2python():
wordlist = request.args.get('wordlist', [])
return jsonify(result=wordlist)
@app.errorhandler(404)
def page_not_found(e):
"""Return a custom 404 error."""
return 'Sorry, nothing at this URL.', 404
теперь, при переходе в list
переменная строка (например,var list = $( "#wordlist option" ).val();
), этот код работает просто отлично. Однако, при попытке его с массивом, он только передает значение резервной копии (т. е. []
).
означает ли это, что я могу передавать строки только python? Как лучше всего передать массив javascript в Python?
спасибо всем за вашу помощь!
P. S. Может это важно упомянуть. Я использую Google app engine для размещения этого кода.
=================================================================================
FYI, это так сайты, которые я пытался следовать, и они не помогли мне:
передача массива Javascript в Flask (превосходный и очень подробный ответ, но не может получить его работа)
1 ответов
вот еще один способ передать массив JS в python:
сторона JS:
$.getJSON($SCRIPT_ROOT + '/_array2python', {
wordlist: JSON.stringify(list)
}, function(data){
console.log(data.result)
$( "#result" ).text(data.result);
});
Сторона Python:
import json
@app.route('/_array2python')
def array2python():
wordlist = json.loads(request.args.get('wordlist'))
# do some stuff
return jsonify(result=wordlist)
насколько я знаю, строки-это единственный способ передать массив от клиента к серверу.