ajax post 请求415\ 400 错误
今天用ajax 向后臺發送 post請求時,出現了兩個問題:
1, 發送請求后,控制臺 返回 ?Unsupported media type-415(不支持的媒體類型),這時突然想起來,post 請求要設置請求頭,于是 寫了 xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded.'); 再次發送請求,還是報同樣的錯誤,Unsupported media type-415。查了一下,原來,后端對請求的Content-type 設為了json,??Access-Control-Request-Headers: content-type, 這時要把 content-type 設為json .? xhr.setRequestHeader('Content-Type', ' application/json');
在設置請求頭的時候,還知道了原來第一個參數“Content-Type”, 是不區分大小寫的,寫成‘content-type’ 也是可以的。當然,設置請求頭還要注意以下問題:
1,它必須在open()方法之后,send()方法之前調用,否則會拋錯。
2,如果設置多個請求頭時,可以多次調用setRequestHeader(),后面的設置并不會覆蓋掉前面的設置,而是采用疊加的方式。
3, 兩個參數之間用逗號,隔開。 有時我不經意間寫成了分號:, 造成錯誤。
2,改完之后,發送請求,又報錯了 ,但這次是400? bad? request,? 400指的是請求無效(請求有語法問題或者不能滿足請求),也就是無法獲取到資源, 這主要是后臺要求傳入的數據和前臺我們傳入的數據不匹配,后臺無法解析數據,進行查詢,從而返回數據。但我只傳遞了一個對象。網上搜了一個解決辦法:對我們要傳遞的數據進行json 序列。
var data = JSON.stringify({"page": 0,"limit": 20,"shopId": 1 });3, 再發送一次請求,終于請求成功。 代碼如下:
var xhr = new XMLHttpRequest(); var url ="http://192.168.1.89:8080/server/"; var data = JSON.stringify({"page": 0,"limit": 20,"shopId": 1,"timeType": 3, });xhr.open("POST", url ); xhr.setRequestHeader('Content-Type','application/json'); xhr.onload = function(){console.log(xhr.responseText) // 這里要用xhr.respnseText 獲取數據,我經常給函數傳一個data參數,獲取數據,造成錯誤 } xhr.send(data)?
轉載于:https://www.cnblogs.com/SamWeb/p/6211134.html
總結
以上是生活随笔為你收集整理的ajax post 请求415\ 400 错误的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 下载进度条, 自定义加载
- 下一篇: Render errors:One or