我正在创建一个使用jQuery的$ .post()对象发送XHR AJAX请求的网页。该帖子正在另一个域上的Flask应用程序收到。 Javascript如下:
$.post('http://myurl.com/create', {
'title': sender.title,
'url': sender.url
});
适用的Flask路由器代码为:
@app.route('/create', methods=['GET', 'POST'])
@crossdomain(origin='*')
def create():
print(request.args.get('title'))
if request.method == 'POST':
title = request.form['title']
url = request.form['url']
new_mark = Mark(
title=title,
url=url
)
new_mark.save()
return redirect(url_for('index'))
当表单提交到url时,Python工作得很好,但是当我通过jQuery的AJAX对象POST时,Python工作得很好。每次我尝试发出AJAX请求时都会抛出400错误。我查看了Flask的request.args对象,但是在请求发生时它没有任何内容。
有什么想法吗?
答案 0 :(得分:0)
问题是您的Ajax请求未配置为以跨域请求为目标。 我建议使用$ .ajax而不是$ .post以获得更大的灵活性,并在请求配置中设置crossDomain:true。
$.ajax({
type: 'POST',
url: 'http://myurl.com/create',
crossDomain: true,
data: '{'title': sender.title, 'url': sender.url}',
dataType: 'jsonp',
success: function(responseData, textStatus, jqXHR) {
// Success Callback
},
error: function (responseData, textStatus, errorThrown) {
// Error Callback
}
});
希望这会有所帮助。
答案 1 :(得分:0)
我很蠢。我实际上并没有发送任何数据,因为sender.url和sender.title没有包含任何值-_-。