有时候我们会用在网址后面带参数的做法来在网页间传递一些简单的资料(QueryString),例如:index.aspx?id=U001&name=GQSM,而JavaScript目前没有Function可以直接取到后方的资料,所以就得使用一些方式。
//先取得网址字串,假设此页网址为「index.aspx?id=U001&name=GQSM」var url = location.href;//再来用去寻找网址列中是否有资料传递(QueryString)if(url.indexOf('?')!=-1){ //之后去分割字串把分割后的字串放进阵列中 var ary1 = url.split('?'); //此时ary1里的内容为: //ary1[0] = 'index.aspx',ary2[1] = 'id=U001&name=GQSM' //下一步把后方传递的每组资料各自分割 var ary2 = ary1[1].split('&'); //此时ary2里的内容为: //ary2[0] = 'id=U001',ary2[1] = 'name=GQSM' //最后如果我们要找id的资料就直接取ary[0]下手,name的话就是ary[1] var ary3 = ary2[0].split('='); //此时ary3里的内容为: //ary3[0] = 'id',ary3[1] = 'U001' //取得id值 var id = ary3[1]; }
以上的方法式为了能看的懂所以一步步做解析,一般在实务上不需要撰写如此条列式的程式,通常会写得更简洁,或是利用for迴圈来取得自己需要的资料,例如以下:
//先取得网址字串,假设此页网址为「index.aspx?id=U001&name=GQSM」var url = location.href;//再来用去寻找网址列中是否有资料传递(QueryString)if(url.indexOf('?')!=-1){ var id = ""; //在此直接将各自的参数资料切割放进ary中 var ary = url.split('?')[1].split('&'); //此时ary的内容为: //ary[0] = 'id=U001',ary[1] = 'name=GQSM' //下迴圈去搜寻每个资料参数 for(i=0;i<=ary.length-1;i++) { //如果资料名称为id的话那就把他取出来 if(ary[i].split('=')[0] == 'id') id = ary[i].split('=')[1]; } }
Function:
1.indexOf()
A.indexOf('B');
会回传在A字串中B第一次出现的位置(第一个位置为0),如果在A字串中没有B那会回传-1。
2.split()
A.split('B');
会把A字串以B做切割,各自分成几个小字串,通常会以阵列去装被切割的字串。
参考文章:
1.http://www.wibibi.com/info.php?tid=82
2.http://help.i2yes.com/?q=node/234