前端在調接口的時候,經(jīng)常會出現(xiàn)返回500錯誤的問題。但是用postman調接口卻是沒問題的,這說明自己的寫法或是傳參有問題。
經(jīng)過自己多次總結,發(fā)現(xiàn)問題主要集中在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。此處是后臺返回的數(shù)據(jù)類型。
參考文章: 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)格式化為文本

image.png
如果是其他類型呢?data數(shù)據(jù)該怎么處理?
無奈自己不懂后端,很多想法無法驗證。

image.png