//檢查url裡面是否有包含get_val,有的話則替代,沒有的話則加入
//url: 舊有url,如: a=1&b=2&c=3...等
//get_val: 新參數,比對舊參數是否有一至的參數,如a=2,b=4...等,也支援出參數如a=2&b=3&c=4
function page_check(url, get_val) {
var get_url_array;
var get_array;
var get_array_finish = '{"url_get":[';
var match_first_array;
var match_array;
var match_array_finish = '{"match_get":[';
//使用二維陣列處理
//舊傳值處理
if(url.match('&') != null) {
//多筆處理,丟入JSON處理
get_url_array = url.split('&');
for(var i = 0 ; i < get_url_array.length ; i++) {
get_array = get_url_array[i].split("=");
if( (i+1) == get_url_array.length) {
//最後一筆不加逗號
get_array_finish += '{"name":"'+get_array[0]+'","val":"'+get_array[1]+'"}';
} else {
get_array_finish += '{"name":"'+get_array[0]+'","val":"'+get_array[1]+'"},';
}
}
} else {
//單筆處理,丟入JSON處理
if(url != '') {
get_array = url.split("=");
get_array_finish += '{"name": "'+get_array[0]+'","val":"'+get_array[1]+'"}';
}
}
get_array_finish += ']}'; //JSON字串結尾
obj = JSON.parse(get_array_finish); //JSON格式轉換成陣列
//新參數轉JSON數據
//判斷是否有兩個以上
if(get_val.match('&') != null) {
match_first_array = get_val.split('&');
//有
for(var i = 0 ; i < match_first_array.length ; i++) {
match_array = match_first_array[i].split("=");
//if(match_array[0] != '') {//若不為空值,則可寫入進JSON
if( (i+1) == match_first_array.length) {
//最後一筆不加逗號
match_array_finish += '{"name":"'+match_array[0]+'","val":"'+match_array[1]+'"}';
} else {
match_array_finish += '{"name":"'+match_array[0]+'","val":"'+match_array[1]+'"},';
}
//} //if(match_array[0] != '') {//若不為空值,則可寫入進JSON
} //for(var i = 0 ; i < match_first_array.length ; i++) {
} else {
//沒有
if(get_val != '') {
match_array = get_val.split("=");
match_array_finish += '{"name": "'+match_array[0]+'","val":"'+match_array[1]+'"}';
}
}
match_array_finish += ']}'; //JSON字串結尾
obj_match = JSON.parse(match_array_finish); //JSON格式轉換成陣列
//修改陣列內的資料
var edit_status = false; //判斷修改狀態,有相同值則為true
//for(var key in get_array_finish) { //列出陣列
for(var j=0; j< obj.url_get.length; j++) {
for(var k=0; k< obj_match.match_get.length; k++) {
//比對是否有重覆資料
if(obj.url_get[j].name == obj_match.match_get[k].name) {
obj.url_get[j].val = obj_match.match_get[k].val;
delete obj_match.match_get[k].name; //有修改過就將名字數據刪除
edit_status = true;
}
} //for(var k=0; k< obj_match.match_get.length; k++) {
} //for(var j=0; j< obj.url_get.length; j++) {
var re_str = ''; //要回傳的連結字串
if(obj.url_get.length > 0) { //確定非空值
for(var j=0; j < obj.url_get.length; j++) {
if(obj.url_get[j].name != '') {
re_str += "&" +obj.url_get[j].name + "=" +obj.url_get[j].val;
}
} // for(var key in get_array_finish) {
} //if(get_array_finish != '') {
//判斷新連結參數,若有name不為空的字串,則加入回傳字串
for(var k=0; k < obj_match.match_get.length; k++) {
if(obj_match.match_get[k].name != undefined) {
re_str += "&" +obj_match.match_get[k].name + "=" +obj_match.match_get[k].val;
}
}
//判斷後加字串
if(edit_status == false) {
re_str += "&" + match_array[0] + "=" + match_array[1];
}
//參考:
// http://blog.xuite.net/ahdaa/blog1/31825228-%5BJavaScript%5D%E5%8F%96%E5%BE%97%E7%94%A8get%E5%82%B3%E9%81%9E%E4%B9%8B%E7%B6%B2%E5%9D%80%E5%88%97%E8%B3%87%E8%A8%8A(Query+String)
//比對資料並判斷更新、新增
return re_str;
}
沒有留言 :
張貼留言