请保持温和,因为我是后期工作的新手,但我们一直试图寻找答案。
我正在创建一个返回从第三方API检索到的搜索结果的应用程序。
我正在实现对该API的另一个调用,以检索有关单个结果的更多信息,我想通过AJAX来实现。
这是我的JINJA2模板代码。我正在尝试获取一个id,将其传递给我的flask函数,该函数返回结果并填充相关的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)
答案 0 :(得分:1)
问题很清楚你的路由只允许使用POST方法,但你使用$.getJSON
如果你想使用POST方法,它是一个GET方法
尝试$.post
$.post('/list_comments', {
a: $('li[id="id"]').val()
}, function(data) {
//data contains the JSON object
}, "json");
@app.route('/list_comments', methods=['POST'])
@login_required
def listComments():
a = request.form.get('a')
comments = getComments(a)
return jsonify(comments)
如果您想使用GET方法
试试这个
@app.route('/list_comments', methods=['GET'])
@login_required
def listComments():
a = request.args.get('a', 0, type=int)
comments = getComments(a)
return jsonify(comments)