什么格式是jQuery ajax post请求发送数据以及如何通过Flask的请求对象访问它?

时间:2012-12-25 20:39:19

标签: jquery python ajax flask jqxhr

我正在创建一个使用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对象,但是在请求发生时它没有任何内容。

有什么想法吗?

2 个答案:

答案 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没有包含任何值-_-。