为什么 jquery $.post 命令不向服务器发送 JSON 数据
Why is the jquery $.post command not sending JSON data to the server
我已经使用 $.getJSON
命令一段时间了。 但是由于我实际上是发布到服务器,我需要使用 $.post。 但是一旦我从$.getJSON
切换到$.post
,后端,即Flask Python框架,似乎没有收到任何JSON数据。 这是我唯一改变的。 $.post 的文档似乎表明,使用任一命令发送数据的格式是相同的。
有了$.getJSON
,我可以使用request.args.get命令访问Flask中的JSON参数。 但是在更改为 $.post 后,request.args 是空的(所以 request.args.get() 总是返回 None)。 这是带有$.getJSON
的javascript行:
$.getJSON("/admin/emails/ajax/send", {'data':JSON.stringify(data)}, function(){...})
然后想象一下那条线和$.post(...)
。
编辑 似乎问题是当我从"GET"更改为"POST"时,数据从 Flask 的request.args
对象中消失了。 我尝试使用$.ajax
方法并得到相同的结果。 有人知道为什么吗?
只需打开这个野兽并使用 $.ajax,这样你就不会被包装器绊倒。
$.ajax({
type: 'POST',
url: '/admin/emails/ajax/send',
data: JSON.stringify(data),
dataType: 'json',
success: function(json){
//the JSON response from the server
}
});
好的,我想通了。 如果您以"GET"方法将 JSON 数据发送到服务器,Flask 会将 JSON 数据放入request.args
。 相反,如果您以"POST"方法发送数据,Flask 会将数据放入request.form
。 有点令人困惑,但无论如何。
上面的答案是正确的,但如果你想使用 $.post 你应该去服务器端添加一个标题:"内容类型:app/json"(像这样谷歌它)
您是否尝试过以这种方式$.post
:
$.post("/admin/emails/ajax/send", {'data':JSON.stringify(data)}, function(data){
console.log(data);
}, "json");
//-^^^^^^-----------are you putting dataType here.
相关文章:
- 如何:浏览器将JSON发送到服务器
- 将JSON数据从服务器加载到knockout.jsobservable中
- JSON-从浏览器向外部服务器发送哪些http头JSON文件
- 从第三方服务器发出解析json的问题
- 如何将ember应用程序集成到json服务器中使用
- 在WebSQL服务器中存储JSON数据
- Python在尝试保存新的JSON文件时导致服务器错误
- 从Javascript for jqGrid通过JSON发送服务器端对象
- 将 JSON 对象转换为序列化字符串以进行服务器端处理
- 使用 AJAX 获取 XML,然后将其解析为 JSON(无需服务器)
- 将 JSON 数据保存到服务器上
- REST API 服务器是否应该使用 PUT 接收 JSON 数据或普通表单数据
- 无法从rest服务器Json响应
- 从服务器 json 的角度加载数据
- 将变量从客户端发送到服务器 |JSON vs POST
- 如何从服务器JSON向jsTree添加元数据并检索元数据
- 如何在Sencha Touch中获取服务器JSON响应
- 将标记“series:”添加到响应服务器 JSON 中的 Highcharts 中
- 将标记“series:”插入到响应服务器 JSON 中的 Highcharts 中.格式错误的 JSON
- Angularjs -如何从服务器json答案中设置模板内容