大多数的情况下,我们在程序中使用form表单都是为了向指定的页面提交数据,以进行相应的操作,使用表单的目的是将数据传送到服务端进行处理,那么,数据传输就免不了的了,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项中的内容并未提交到服务器上,服务器上获取的是null,真是奇了怪了。
经过反复的调试,终于发现了问题所在,我们先下看看我们微信中“复制链接”出来的内容是什么样的。
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
貌似这样看就能发现问题在哪了,原来我们在微信上点开一个链接,并没有真正的直接去访问那个链接,其实是微信客户端通过redirect_uri参数调用的结果,不知道微信客户端程序处理的时候是怎么处理的,可能是test.php?action=add这样的action=add参数会在传递的过程中丢失了。
修改一下程序
<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方式传递的参数,全部变成post传递。修改之后测试一下,完全正常了,看来问题可能确实出在这。
后期的自主应用开发过程中发现除了上述情况会导致post提交不了数据以外,还有一种情况。
init.php类的文件中需要对$wapAutoLogin变量和openID进行判断,而且获取的openID存在session缓存中,偶尔会出现session数据丢失的情况。