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)      

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM