我正在尝试让我特定情况下的flask/jquery/ajax例子 能够运行,但每次都失败了。我知道这种问题已经被问过好几次了,但答案对我没有帮助(是的,我是新手)。
该示例将一个字符串从javascript传递到python。我想传递一个数组。网上建议这是可能的。下面是我的代码: HTML/Flask模板:
该示例将一个字符串从javascript传递到python。我想传递一个数组。网上建议这是可能的。下面是我的代码: HTML/Flask模板:
{% 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脚本:
$(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
现在,当将字符串(例如var list = $(“#wordlist option”).val();
)传递到list
变量中时,此代码可以正常工作。但是,当尝试使用数组时,它只会传递备份值(即[]
)。
这是否意味着我只能将字符串传递给Python?我如何最好地将JavaScript数组传递给Python?
感谢大家的帮助!
P.S.也许重要的是提到。我正在使用Google应用引擎托管此代码。
=================================================================================
供您参考,这些是我尝试遵循但未能帮助我的SO网站:
将JavaScript数组传递给Flask(非常出色且详细的答案,但无法使其正常工作)