问题描述
前端发送post请求的同时添加headers
解决方案
.ajax()
添加参数headers
即可
代码
即将传输的数据:
post请求[{'Chinese': 70}, {'Math': 80}, {'English': 90}]
headers{'name'='XerCis', 'number'=2015012755}
index.html
<!DOCTYPE html>
<head>
<meta charset='utf-8'>
<script src='https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js'></script>
</head>
<body>
<button id='send'>发送复杂数据</button>
<script>
var data = new Object();
data['grade'] = new Array();
data['grade'].push({'Chinese': 70});
data['grade'].push({'Math': 80});
data['grade'].push({'English': 90});
var headers = new Object();
headers['name'] = 'XerCis';
headers['number'] = 2015012755;
$('#send').click(function () {
data = JSON.stringify(data);
$.ajax({
type: 'POST',
url: '/test',
data: JSON.stringify(data),
headers: headers,
contentType: 'application/json',
success: function (response) {
alert(response);
}
});
})
</script>
</body>
</html>
server.py
import json
import tornado.web
import tornado.ioloop
from tornado.options import define, options
define("port", default=8888, help="运行端口", type=int)
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.render("index.html")
class TestHandler(tornado.web.RequestHandler):
def post(self):
headers = self.request.headers
name = headers['name']
number = headers['number']
print(name, number) # headers数据
print(json.loads(self.request.body)) # post数据
self.write("success")
if __name__ == "__main__":
app = tornado.web.Application(
[
(r"/", MainHandler),
(r"/test", TestHandler),
],
)
app.listen(options.port)
print("http://localhost:{}/".format(options.port))
tornado.ioloop.IOLoop.current().start()
运行结果
XerCis 2015012755
{"grade":[{"Chinese":70},{"Math":80},{"English":90}]}