0

我正在尝试将 json 发布到我的烧瓶服务器,但发布请求总是失败。这就是我的做法,知道做错了什么吗?

jQuery.ajax({
    url:'/someLink',
    method:'POST',
    data:JSON.stringify({"sampleKey":"Value"}),
    success:function(data){
        console.log(data);
    },
});

我的烧瓶服务器看起来像

@app.route('/someLink', methods=['POST'])
def someFn():
 sampleKey = str(request.form['sampleKey'])

我相信存在一些数据序列化问题,因为以下请求有效

jQuery.post('/someLink',{"sampleKey":"Value"},function(data){console.log(data)});
4

1 回答 1

1

jQuery.ajax接受普通对象或查询字符串作为数据参数。它不接受 JSON 编码的字符串。

它默认发送数据'application/x-www-form-urlencoded; charset=UTF-8',这意味着除非您像 Ian 建议的那样明确地覆盖它(并且服务器期望它),否则您不应传递 JSON 编码的字符串。

您可以通过传递对象轻松解决此问题。

API

数据

类型:PlainObject 或 String

要发送到服务器的数据。如果还不是字符串,则将其转换为查询字符串。它附加到 GET 请求的 url。请参阅 processData 选项以防止此自动处理。对象必须是键/值对。如果 value 是一个数组,jQuery 会根据传统设置的值(如下所述)序列化具有相同键的多个值。

尝试

jQuery.ajax({
    url:'/someLink',
    method:'POST',
    data:{"sampleKey":"Value"},
    success:function(data){
        console.log(data);
    }
});
于 2013-05-23T05:25:52.150 回答