来自服务器的 Ajax
我将从实现服务器端部分开始。 当用户单击动态下方显示的翻译链接时,将向服务器发出异步 HTTP 请求。 我将在下一节中向你展示如何执行此操作,因此现在我将专注于实现服务器处理此请求的操作。
异步(Ajax)请求类似于我在应用中创建的路由和视图函数,唯一的区别是它不返回 HTML 或重定向,而是返回数据,格式为 XML 或更常见的 JSON 。 你可以在下面看到翻译视图函数,该函数调用 Microsoft Translator API,然后返回 JSON 格式的翻译文本:
app/routes.py :文本翻译视图函数。
from flask import jsonify
from app.translate import translate
@app.route('/translate', methods=['POST'])
@login_required
def translate_text():
return jsonify({'text': translate(request.form['text'],
request.form['source_language'],
request.form['dest_language'])})
如你所见,相当简单。 我以 POST
请求的形式实现了这条路由。 关于什么时候使用 GET
或 POST
(或者还没有见过的其他请求方法),真的没有绝对的规则。 由于客户端将发送数据,因此我决定使用 POST
请求,因为它与提交表单数据的请求类似。 request.form
属性是 Flask 用提交中包含的所有数据暴露的字典。 当我使用 Web 表单工作时,我不需要查看 request.form
,因为 Flask-WTF 可以为我工作,但在这种情况下,实际上没有 Web 表单,所以我必须直接访问数据。
所以我在这个函数中做的是调用上一节中的 translate()
函数,直接从通过请求提交的数据中传递三个参数。 将结果合并到单个键 text
下的字典中,字典作为参数传递给 Flask 的 jsonify()
函数,该函数将字典转换为 JSON 格式的有效载荷。 jsonify()
返回的值是将被发送回客户端的 HTTP 响应。
例如,如果客户希望将字符串“Hello,World!”翻译成西班牙语,则来自该请求的响应将具有以下有效载荷:
{ "text": "Hola, Mundo!" }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论