2012-09-18 44 views
1

我试图让一个JSON对象从字符串URL没有成功字符串URL以JSON对象

我有这样的:

var URL = "http://localhost/index.php?module=search&param1=4"; 

,我需要这样的:

var dir = index.php; 
var result = { 
      module:'search', 
      param1:4 
      }; 

任何人都可以帮助我的代码?

+2

http://james.padolsey.com/javascript/parsing-urls-with-the-dom/ – zerkms

+0

还有一个jQuery(不是真正的)版本:https://github.com/allmarkedup/jQuery-URL-解析器 – Blender

+0

@zerkms工程很好,正是我所需要的,发布答案如果你想让我接受它。谢谢!! –

回答

1

这种简单的JavaScript做它

url = "http://localhost/index.php?module=search&param1=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); 
+0

虽然不处理数组.. – Pithikos

3

该功能可以从字符串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&param1=4"); 
console.log(obj.module); 
console.log(obj.param1); 

给出:

"search" 
"4" 

如果你想"4"转换为你做手工的整数。