HackWeek踩坑记(5) - 通过$.ajax()传递JSON格式的数据

这其实是另一个组掉的坑,情况大致是这样:该组的后端写好了一个API路径,只接受POST方法,而且POST的数据只接受Content-Type为application/json格式的数据,也就是说前端写的XHR请求必须POST一个JSON格式的数据。而这也是问题的根源所在,因为该组的前端使用jQuery编写Ajax请求,在$.ajax({})中的data字段里注入的数据发送给API时变成了x-www-form-urlencoded格式,也就是说把JSON数据变成表单数据提交给了API,所以API才会一直报400错误。然而我之前似乎从来没有用过$.ajax()方法传递过JSON数据,当时我尝试过JSON.stringify()方法插入到data中,还是不奏效,之后去Google上找答案,才知道需要手动设置Request Header。但是这个方法必须在POST数据之前拿到原生的XHR对象,再通过XMLHttpRequest.setRequestHeader()来设置Content-Type改造后的代码示例如下:$.ajax({ type: 'POST', url: '/api/demo', dataType: 'json', beforeSend: function(xhr) { //此处通过函数传入XMLHttpRequest对象的实例 xhr.setRequestHeader('Content-Type', 'application/json') }, success: function(data) { //对回调函数传入的response进行处理…