我試圖讓一個JSON對象從字符串URL沒有成功字符串URL以JSON對象
我有這樣的:
var URL = "http://localhost/index.php?module=search¶m1=4";
,我需要這樣的:
var dir = index.php;
var result = {
module:'search',
param1:4
};
任何人都可以幫助我的代碼?
我試圖讓一個JSON對象從字符串URL沒有成功字符串URL以JSON對象
我有這樣的:
var URL = "http://localhost/index.php?module=search¶m1=4";
,我需要這樣的:
var dir = index.php;
var result = {
module:'search',
param1:4
};
任何人都可以幫助我的代碼?
這裏發佈鏈接並不完全正確,但在這種情況下,OP需要的僅僅是一些庫來解析URL。
這裏,它是:http://james.padolsey.com/javascript/parsing-urls-with-the-dom/
太棒了!謝謝(Y) –
這種簡單的JavaScript做它
url = "http://localhost/index.php?module=search¶m1=4";
var parameters = url.split("?");
var string_to_be_parsed = parameters[1];
var param_pair_string = string_to_be_parsed.split("&");
alert(param_pair_string.length);
var i = 0;
var json_string = "{"
for(;i<param_pair_string.length;i++){
var pair = param_pair_string[i].split("=");
if(i < param_pair_string.length - 1)
json_string += pair[0] + ":'" + pair[1] + "',";
else
json_string += pair[0] + ":'" + pair[1] + "'";
}
json_string += "}";
alert(json_string);
雖然不處理數組.. – Pithikos
該功能可以從字符串URL解析變量和陣列:
function url2json(url) {
var obj={};
function arr_vals(arr){
if (arr.indexOf(',') > 1){
var vals = arr.slice(1, -1).split(',');
var arr = [];
for (var i = 0; i < vals.length; i++)
arr[i]=vals[i];
return arr;
}
else
return arr.slice(1, -1);
}
function eval_var(avar){
if (avar[1].indexOf('[') == 0)
obj[avar[0]] = arr_vals(avar[1]);
else
obj[avar[0]] = avar[1];
}
if (url.indexOf('?') > -1){
var params = url.split('?')[1];
if(params.indexOf('&') > 2){
var vars = params.split('&');
for (var i in vars)
eval_var(vars[i].split('='));
}
else
eval_var(params.split('='));
}
return obj;
}
你的情況:
obj = url2json("http://localhost/index.php?module=search¶m1=4");
console.log(obj.module);
console.log(obj.param1);
給出:
"search"
"4"
如果你想"4"
轉換爲你做手工的整數。
http://james.padolsey.com/javascript/parsing-urls-with-the-dom/ – zerkms
還有一個jQuery(不是真正的)版本:https://github.com/allmarkedup/jQuery-URL-解析器 – Blender
@zerkms工程很好,正是我所需要的,發佈答案如果你想讓我接受它。謝謝!! –