微信小程序:POST請(qǐng)求data數(shù)據(jù)請(qǐng)求不到
最近開(kāi)始開(kāi)發(fā)小程序,遇到許多小問(wèn)題,直奔主題。

wx.request()是微信封裝的ajax請(qǐng)求方法,也是小程序中ajax唯一的一個(gè)方法,被放在了API文檔的第一個(gè)位置,的確使用率是最高的。
但是wx.request()并非像jquery中的$.ajax()一樣,它還需要開(kāi)發(fā)者在具體情況中做一些調(diào)整。


在直接發(fā)送POST請(qǐng)求時(shí),請(qǐng)求成功,可以觸發(fā)success回調(diào),但是請(qǐng)求到的數(shù)據(jù)為空。這其中的問(wèn)題出在https請(qǐng)求的header上。(上圖為header未設(shè)置時(shí)的情況)


當(dāng)把請(qǐng)求header的content-type設(shè)置為application/x-www-form-urlencoded后,數(shù)據(jù)就能正常請(qǐng)求到了。

請(qǐng)求數(shù)據(jù)內(nèi)容正確

這種content-type為application/x-www-form-urlencoded時(shí),數(shù)據(jù)會(huì)轉(zhuǎn)換為query string形式:

這種跟在url后的形式,數(shù)據(jù)長(zhǎng)度受限。
默認(rèn)狀態(tài)下則是這種形式:

可見(jiàn),修改header的確請(qǐng)求到了數(shù)據(jù),但是這種方法完全違背了header的理念,get請(qǐng)求才應(yīng)該將數(shù)據(jù)掛在url后面,而post請(qǐng)求所發(fā)送的數(shù)據(jù)會(huì)有可能超出query string形式的長(zhǎng)度限制。
網(wǎng)上有說(shuō)content-type寫成小寫時(shí)post請(qǐng)求可以成功,但是本人測(cè)試無(wú)效。
感覺(jué)這應(yīng)該是一個(gè)設(shè)計(jì)缺陷,好在小程序都很簡(jiǎn)單,一般不會(huì)有需要傳遞特別多參數(shù)的請(qǐng)求。
如果有其他解決方法或者原因分析歡迎指點(diǎn)。
posted on 2017-04-11 10:35 就看運(yùn)氣了 閱讀(17284) 評(píng)論(0) 收藏 舉報(bào)
浙公網(wǎng)安備 33010602011771號(hào)