【发布时间】:2014-02-12 20:15:38
【问题描述】:
我需要一些帮助来从 jquery ajax 获取烧瓶中的 json 数据。
在客户端 javascript 下方,每当单击某个按钮时都会调用它。
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
function change_status(item, status) {
var statusObj={"desc":item, "status":status};
$.ajax({
url:"/robot/api/"+item,
type: "PUT",
contentType:"applicaton/json",
dataType:"json",
data: JSON.stringify(statusObj)
});
}
</script>
在服务器端(flask),我有下面的代码来捕获 json 数据。
@app.route('/robot/api/<item>', methods = ['PUT'])
def update_item(item):
print "content_type: ", request.content_type
print "request.json: ", request.json
if not request.json:
print "bad json format"
abort(400)
else
"""
do something like update data
"""
在PC中,当点击浏览器中调用javascript函数的按钮时,flask服务器正在打印以下消息:
"content_type: applicaton/json; charset=UTF-8
request.json: None
bad json format
192.168.1.241 - - [12/Feb/2014 15:06:16] "PUT /robot/api/3g HTTP/1.1" 400 -"
它显示 request.content_type 是 json 但实际打印时显示为 None。
我使用wireshark进行数据包捕获以查看来自PC的数据,我看到如下:
从 PC 到 Flask 服务器:
PUT /robot/api/3g HTTP/1.1
Host: "my flask server ip address"
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: applicaton/json; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: "my flask server ip address"
Content-Length: 28
Connection: keep-alive
{"desc":"3g","status":"off"}
但是 Flask 服务器返回“HTTP/1.0 400 BAD REQUEST”
【问题讨论】:
-
您是否尝试过使用
data: statusObj?