【发布时间】:2014-04-21 01:46:35
【问题描述】:
请温柔,因为我对后端工作很陌生,但已经搜索过试图找到答案。
我正在创建一个应用程序,该应用程序返回从第 3 方 API 检索到的搜索结果。
我正在实现对该 API 的另一个调用,以检索有关单个结果的更多信息,我想通过 AJAX 来实现。
这是我的 JINJA2 模板代码。我正在尝试获取一个 id,将其传递给我的烧瓶函数,该函数返回结果并填充相关的 div。在服务器上,我收到 405 响应。
{% extends "layout.html" %}
{% block body %}
<script type=text/javascript>
$(function() {
$("a#listComments").bind('click', function() {
$.getJSON('list_comments', {
a: $('li[id="id"]').val()
}, function(data) {
$("#comments").text(data.result);
});
console.log("This actually worked");
});
});
</script>
<form>
<ul class=table>
{% for result in results %}
<li id="id">{{ result.id }}</li>
<p>{{ result.title }}</p>
<p><a href="javascript:void();" id="listComments">List Comments</a>
<span id="comments">?</span>
{% else %}
<li><em>Unbelievable, no results</em>
{% endfor %}
</ul>
</form>
{% endblock %}
这是我接受 json 并返回结果的简单函数(我构建了一个单独的函数来调用 API,未显示)。
@app.route('/list_comments', methods=['POST'])
def listComments():
if not session.get('logged_in'):
abort(401)
if request.method == 'POST':
#a = request.args.get('a', 0, type=int)
comments = getComments(a)
return jsonify(comments)
【问题讨论】:
-
尝试在您的 API 控制器方法中执行 GET 而不是 POST。打开 Chrome 的调试器和网络选项卡,查看调用 ajax 函数时使用的 HTTP 方法。
标签: javascript python ajax flask jinja2