gpt4 book ai didi

javascript - Flask 动态数据更新,无需重新加载页面

转载 作者:IT老高 更新时间:2023-10-28 21:02:59 30 4
gpt4 key购买 nike

我正在尝试创建类似 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 中动态打印列表中的建议?

最佳答案

工作示例:

app.py

from flask import Flask, render_template, request
import requests
from bs4 import BeautifulSoup


app = Flask(__name__)


@app.route('/')
def index():
return render_template('index.html')


@app.route('/suggestions')
def suggestions():
text = request.args.get('jsdata')

suggestions_list = []

if text:
r = requests.get('http://suggestqueries.google.com/complete/search?output=toolbar&hl=ru&q={}&gl=in'.format(text))

soup = BeautifulSoup(r.content, 'lxml')

suggestions = soup.find_all('suggestion')

for suggestion in suggestions:
suggestions_list.append(suggestion.attrs['data'])

#print(suggestions_list)

return render_template('suggestions.html', suggestions=suggestions_list)


if __name__ == '__main__':
app.run(debug=True)

index.html

<!DOCTYPE html>

<html>

<head>
<title>Suggestions</title>
</head>

<body>

Search: <input type="text" id="search_form_input"></input>

<div id="place_for_suggestions"></div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

<script>
$("#search_form_input").keyup(function(){
var text = $(this).val();

$.ajax({
url: "/suggestions",
type: "get",
data: {jsdata: text},
success: function(response) {
$("#place_for_suggestions").html(response);
},
error: function(xhr) {
//Do Something to handle error
}
});
});
</script>

</body>

</html>

suggestions.html

<label id="value_lable">
{% for suggestion in suggestions %}
{{ suggestion }}<br>
{% endfor %}
</label>

关于javascript - Flask 动态数据更新,无需重新加载页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40963401/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com