前端在调接口的时候,经常会出现返回500错误的问题。但是用postman调接口却是没问题的,这说明自己的写法或是传参有问题。
经过自己多次总结,发现问题主要集中在Content-Type这个属性上。
postman返回结果说明
任何时候开始写代码掉接口之前,应该先用postman调一下。如果postman返回结果是ok的,说明接口没问题。反之接口有问题。
下面是接口返回正确结果后的内容。
Access-Control-Allow-Credentials →true
Access-Control-Allow-Headers →Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers
Access-Control-Allow-Origin →*
Access-Control-Request-Methods →GET,POST,HEAD,PUT,OPTIONS,DELETE,TRACE,CONNECT,MOVE,PROXY
Content-Length →16
Content-Type →application/json
Date →Tue, 02 May 2017 10:58:32 GMT
Server →Werkzeug/0.12.1 Python/2.7.6
注意到Content-Type→application/json。此处是后台返回的数据类型。
参考文章: http://blog.csdn.net/calyxmelo/article/details/54969244
不使用contentType: “application/json”则data可以是对象
$.ajax({
url: actionurl,
type: "POST",
datType: "JSON",
data: { id: nodeId },
async: false,
success: function () {}
});
使用contentType: “application/json”则data只能是json字符串,也就是要对对象格式化为字符串,通常使用 var newObj=JSON.stringify(obj)
$.ajax({
url: actionurl,
type: "POST",
datType: "JSON",
contentType: "application/json"
data: "{'id': " + nodeId +"}",
async: false,
success: function () {}
});
data也可以这样写:
data:JSON.stringify({'id': + nodeId })
在Postman中调接口时,注意text类型。
个人猜想:如果是text类型,那么需要将JSON.stringify(obj)格式化为文本
如果是其他类型呢?data数据该怎么处理?
无奈自己不懂后端,很多想法无法验证。