最近開始開發小程序,遇到許多小問題,直奔主題。
wx.request()是微信封裝的ajax請求方法,也是小程序中ajax唯一的一個方法,被放在了API文檔的第一個位置,的確使用率是最高的。
但是wx.request()並非像jquery中的$.ajax()一樣,它還需要開發者在具體情況中做一些調整。
在直接發送POST請求時,請求成功,可以觸發success回調,但是請求到的數據為空。這其中的問題出在https請求的header上。(上圖為header未設置時的情況)
當把請求header的content-type設置為application/x-www-form-urlencoded后,數據就能正常請求到了。
請求數據內容正確
這種content-type為application/x-www-form-urlencoded時,數據會轉換為query string形式:
這種跟在url后的形式,數據長度受限。
默認狀態下則是這種形式:
可見,修改header的確請求到了數據,但是這種方法完全違背了header的理念,get請求才應該將數據掛在url后面,而post請求所發送的數據會有可能超出query string形式的長度限制。
網上有說content-type寫成小寫時post請求可以成功,但是本人測試無效。
感覺這應該是一個設計缺陷,好在小程序都很簡單,一般不會有需要傳遞特別多參數的請求。
如果有其他解決方法或者原因分析歡迎指點。