用PHP的GET/POST方式来传递方式已经是司空见惯了,但是如果我的页面是一个静态的html的页面,想传递参数的时候要怎么办呢?在APPCAN的开发中我们会经常遇到这样的问题,因为所有的页面都是静态的HTML页面,服务器的数据请求都是通过ajax来实现的,那我们如何访问一个带参数的页面呢?
首先想到的是通过js来获取url中的参数,然后获得参数后进行ajax数据交换来请求当前页面的内容,具体方法如下:
function GetRequest(key){
var url = location.search;
if(url.indexOf("?") != -1){
var str = url.substr(1);
strs = str.split("&");
for(var i=0; i <strs.length;i++ ){
if(key == strs.split("=")[0])
var res = unescape(strs.split("=")[1]);
}
}
return res;
}
GetRequest是一个简单的用来获取url中key这个键对应的值,比如 goods.html?id=1页面中,我们通过GetRequest("id")就可以获得对应的值:1。
但是很不幸,到了APPCAN中,PC模拟器上一切正常,在安卓机上进行测试的时候发现,他居然不执行!
这样一来,我们只能考虑通过其他的方法来达到传参这个目的了,
备选方案是通过localstorage来实现,在点击跳转页面之前,先将参数存入localstorage,然后在新页面中获取这个参数,具体的存储及获取localstorage的方法如下:
function setLocStorage(key,val){
appcan.locStorage.setVal(key,val);
}
function getLocStorage(key){
var val=appcan.locStorage.getVal(key);
return val;
}
大功告成,虽然觉得有些别扭,但是暂时还没有想到其他比较好的替代方案,就先用着了。
|