【发布时间】:2017-04-19 04:55:53
【问题描述】:
我正在尝试创建类似 Google Suggest Tool 的东西(通过建议 api http://suggestqueries.google.com/complete/search?output=toolbar&hl=ru&q=query)
我正在监听输入变化,并通过 GET 发送数据:
$("#search_form_input").keyup(function(){
var some_var = $(this).val();
$.ajax({
url: "",
type: "get", //send it through get method
data:{jsdata: some_var},
success: function(response) {
},
error: function(xhr) {
//Do Something to handle error
}
});
之后我正在处理这些数据并将其发送到 Google API 并在 Python 中得到响应:
@app.route('/', methods=['GET', 'POST'])
def start_page_data():
query_for_suggest = request.args.get('jsdata')
if query_for_suggest == None:
suggestions_list = ['',]
pass
else:
suggestions_list = []
r = requests.get('http://suggestqueries.google.com/complete/search?output=toolbar&hl=ru&q={}&gl=in'.format(query_for_suggest), 'lxml')
soup = BeautifulSoup(r.content)
suggestions = soup.find_all('suggestion')
for suggestion in suggestions:
suggestions_list.append(suggestion.attrs['data'])
print(suggestions_list)
return render_template('start_page.html', suggestions_list=suggestions_list)
在 Jinja 中试图以 HTML 动态打印它:
<label id="value_lable">
{% for suggestion in suggestions_list %}
{{ suggestion }}
{% endfor %}
</label>
但 Jinja 中的变量不会动态更新并打印空列表。
如何在 HTML 中动态打印列表中的建议?
【问题讨论】:
-
在 JavaScript 中,你的
success:函数是空的,所以你对来自 Flask 的数据什么也不做。 -
我需要解决什么问题?
-
我想你不知道 AJAX/JavaScript 是如何工作的。 JavaScript 向 Flask 发送数据,Flask 发送回一些数据 - 比 JSON 更好 - JavaScript 接收这些数据并在浏览器中更新 HTML。
-
你能发几个例子,如何处理这个?
-
我
success函数你必须在 HTML 中找到元素 - 使用$(...)- 然后你可以更新它 - 使用你在response中的数据。
标签: javascript jquery python flask jinja2