2012-04-22 112 views
2

我有下面的函数,将查询放入一个对象。它的工作原理,但增加了网址的对象,我不真正正则表达式萨维够解决如何删除网址,只包括变量。Url查询字符串到对象

function urlToObj(url) 
{ 
     var obj = {}; 
     url.replace(
      new RegExp("([^?=&]+)(=([^&]*))?", "g"), 
      function($0, $1, $2, $3) { obj[$1] = $3; } 
     ); 

     return obj; 
} 

例如,

url = http://www.example.com/hello/world.php?var1=1&var2=2 
url = http://www.example.com/hello/world.asp?var1=1&var2=2 
url = http://www.example.com/hello/world?var1=1&var2=2 

obj = urlToObj(url); 

输出

obj { var1="1", var2="2", http://www.example.com/hello/world.php="" } 
obj { var1="1", var2="2", http://www.example.com/hello/world.asp="" } 
obj { var1="1", var2="2", http://www.example.com/hello/world="" } 

我想它删除的网址,以便它看起来像这样

obj { var1="1", var2="2" } 

任何示例和信息在那里我错将是巨大的。

感谢

+0

可能重复http://stackoverflow.com/questions/2843813/extract-get-parameters-from-a-user-inputed -url-with-javascript) – 2012-04-22 17:19:29

回答

0

这个扩展创造了快速读取查询字符串修改和创建一个单独查询字符串对象。这个插件提供了一个简单的方法来获取页面的查询字符串,并用少量代码创建这个修改版本。

http://archive.plugins.jquery.com/project/query-object

+0

我在计算如何将url加载到插件时遇到了一些问题。我知道你可以使用$ .query.set(“section”,5).set(“action”,“do”)。toString();但我有一个大的查询,必须有一种方法来加载一个网址,而不是添加每个变种。我错过了什么。 – Des 2012-04-22 17:01:00

0

什么一些黑客? :-)

function urlToObj (url) { 
    var obj = {}; 
    url.replace(
     new RegExp("([^?=&]+)(=([^&]*))?", "g"), 
     function($0, $1, $2, $3) { obj[$1] = $3; } 
    ); 

    // Now, you know you've got an empty string for your url 
    // So let's loop through the object and remove this property 
    for (var prop in obj) { 

     // You only want the objects properties, nothing inherited 
     if (obj.hasOwnProperty(prop)) { 

      // If it's an empty string 
      if (obj[ prop ] === '') { 

       // Delete it! 
       delete obj[ prop ] 
      } 
     } 
    } 
    return obj; 
} 
[从与JavaScript用户输入的网址提取物GET参数(的
+0

感谢您的破解;)但需要在查询中使用数组的插件。不管怎么样,看起来你必须将每个变量添加到对我来说毫无意义的obj中。 – Des 2012-04-22 17:22:16