Javascript - HTML的request类


做中英转换的时候,要精确的猎取参数并 存入,所以做了一个 方便的html中用js猎取当取地址栏的一个Object 。
里面有三个 步骤:
1、request.QueryString("参数")//猎取指定参数,返回字符串;
2、request.QueryStrings();//猎取所有参数,并返回数组;
3、request.setQuery("参数","参数的值");//假如目前地址栏有此参数,那么将更新此参数,不然返回一个新的地址栏参数字符串 。
例如:
目前地址栏参数字符串为:?name=a&site=never_online

alert(request.setQuery("name","blueDestiny"))

假如地址栏参数中有"name",那么返回?name=blueDestiny&site=never_online

setQuery 步骤有自动追加参数的 性能 。如:
目前地址栏参数字符串为:?site=never_online
alert(request.setQuery("name","blueDestiny"))
则返回?site=never_online&name=blueDestiny

同理,假如地址栏没有参数,也会自动追加参数
alert(request.setQuery("name","blueDestiny"))
返回?name=blueDestiny

<SCRIPT LANGUAGE="JavaScript">
<!--
// author: never-online
// web: never-online.net
var request = {
 QueryString : function(val) {
 var uri = window.location.search;
 var re = new RegExp("" +val+ "\=([^\&\?]*)", "ig");
 return ((uri.match(re))?(uri.match(re)[0].substr(val.length+1)):null);
 },
 QueryStrings : function() {
 var uri = window.location.search;
 var re = /\w*\=([^\&\?]*)/ig;
 var retval=[];
 while ((arr = re.exec(uri)) != null)
 retval.push(arr[0]);
 return retval;
 },
 setQuery : function(val1, val2) {
 var a = this.QueryStrings();
 var retval = "";
 var seted = false;
 var re = new RegExp("^" +val1+ "\=([^\&\?]*)$", "ig");
 for(var i=0; i<a.length; i++) {
 if (re.test(a[i])) {
 seted = true;
 a[i] = val1 +"="+ val2;
 }
 }
 retval = a.join("&");
 return "?" +retval+ (seted ? "" : (retval ? "&" : "") +val1+ "=" +val2);
 }
}
alert(request.setQuery("e","b"))
//-->
</SCRIPT>