大多數(shù)的情況下,我們在程序中使用form表單都是為了向指定的頁面提交數(shù)據(jù),以進(jìn)行相應(yīng)的操作,使用表單的目的是將數(shù)據(jù)傳送到服務(wù)端進(jìn)行處理,那么,數(shù)據(jù)傳輸就免不了的了,form表單中常用的傳遞方式包含get,post兩種。平時我們可能會像這樣寫
<form name="form1" method="post" action="test.php?action=add">
<input type="text" name="title" size="30">
<input type="submit" name="submit" value="保存">
</form>
上面這段代碼平時在PC端或者手機端操作,是一點問題都沒有的,但是,很奇怪的是,在微信客戶端操作的時候,表單提交后,title項中的內(nèi)容并未提交到服務(wù)器上,服務(wù)器上獲取的是null,真是奇了怪了。
經(jīng)過反復(fù)的調(diào)試,終于發(fā)現(xiàn)了問題所在,我們先下看看我們微信中“復(fù)制鏈接”出來的內(nèi)容是什么樣的。
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx4db64ca05f5e03ab&redirect_uri=http%3A%2F%2Fwww.******.net%2Fwap%2Ftest.php&response_type=code&scope=snsapi_base&state=1#wechat_redirect
貌似這樣看就能發(fā)現(xiàn)問題在哪了,原來我們在微信上點開一個鏈接,并沒有真正的直接去訪問那個鏈接,其實是微信客戶端通過redirect_uri參數(shù)調(diào)用的結(jié)果,不知道微信客戶端程序處理的時候是怎么處理的,可能是test.php?action=add這樣的action=add參數(shù)會在傳遞的過程中丟失了。
修改一下程序
<form name="form1" method="post">
<input type="text" name="title" size="30">
<input type="hidden" name="action" value="add">
<input type="submit" name="submit" value="保存">
</form>
將原來get方式傳遞的參數(shù),全部變成post傳遞。修改之后測試一下,完全正常了,看來問題可能確實出在這。
后期的自主應(yīng)用開發(fā)過程中發(fā)現(xiàn)除了上述情況會導(dǎo)致post提交不了數(shù)據(jù)以外,還有一種情況。
init.php類的文件中需要對$wapAutoLogin變量和openID進(jìn)行判斷,而且獲取的openID存在session緩存中,偶爾會出現(xiàn)session數(shù)據(jù)丟失的情況。