我正在创建一个使用 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 对象,但发出请求时该对象中没有任何内容。
有什么想法吗?
请您参考如下方法:
问题是您的 Ajax 请求未配置为针对跨域请求。 我建议使用 $.ajax 而不是 $.post 以获得更大的灵 active 并在请求配置中设置 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
}
});
希望这会有所帮助。
