2

我正在创建一个使用 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 时却不行。每次我尝试发出 AJAX 请求时都会引发 400 错误。我查看了 Flask 的 request.args 对象,但在发出请求时它没有任何内容。

有任何想法吗?

4

2 回答 2

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
  }
});

希望这会有所帮助。

于 2012-12-25T20:47:28.650 回答
0

我很蠢。我实际上并没有发送任何数据,因为 sender.url 和 sender.title 不包含任何值-_-。

于 2012-12-25T23:26:10.070 回答