2012-04-22 113 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