如何从网址获取参数

时间:2012-02-08 18:28:10

标签: javascript jquery

如下所示,我试图让#currentpage传递客户端参数

有人可以帮忙谢谢。

$(document).ready(function() {
    window.addEventListener("load", windowLoaded, false);
    function windowLoaded() {
      chrome.tabs.getSelected(null, function(tab) {
        document.getElementById('currentpage').innerHTML = tab.url;
      });
    }
    var url = $("currentpage");
    // yes I relize this is the part not working.
    var client = jQuery.param("currentpage");
    var page = jQuery.param("currentpage");
    var devurl = "http://#/?clientsNumber=" + client + "&pageName=" + page ;
});

1 个答案:

答案 0 :(得分:2)

这是一种从网址中提取参数的方法

function getUrlParams(url) {
  var paramMap = {};
  var questionMark = url.indexOf('?');
  if (questionMark == -1) {
    return paramMap;
  }
  var parts = url.substring(questionMark + 1).split("&");

  for (var i = 0; i < parts.length; i ++) {
    var component = parts[i].split("=");
    paramMap [decodeURIComponent(component[0])] = decodeURIComponent(component[1]);
  }
  return paramMap;
}

以下是在代码中使用它的方法

var url =  "?c=231171&p=home";
var params = getUrlParams(url);
var devurl = "http://site.com/?c=" + encodeURIComponent(params.c) + "&p=" + encodeURIComponent(params.p) + "&genphase2=true";
// devurl == "http://site.com/?c=231171&p=home&genphase2=true"

在行动http://jsfiddle.net/mendesjuan/TCpsD/

中查看

这是您发布的代码,只需进行最少的更改即可使其工作,它还使用$.param,因为它是从JS对象创建查询字符串,这很有效,因为我建议的函数返回一个对象来自网址

$(document).ready(function() {
    // This does not handle arrays because it's not part of the official specs
    // PHP and some other server side languages support it but there's no official
    // consensus
    function getUrlParams(url) {
      var paramMap = {};
      var questionMark = url.indexOf('?');
      if (questionMark == -1) {
        return paramMap;
      }
      var parts = url.substring(questionMark + 1).split("&");

      for (var i = 0; i < parts.length; i ++) {
        var component = parts[i].split("=");
        paramMap [decodeURIComponent(component[0])] = decodeURIComponent(component[1]);
      }
      return paramMap;
    }
    // no need for the extra load listener here, jquery.ready already puts 
    // your code in the onload
    chrome.tabs.getSelected(null, function(tab) {
        document.getElementById('currentpage').innerHTML = tab.url;
    });

    var url = $("currentpage");
    var paramMap = getUrlParams(url);
    // Add the genphase parameter to the param map
    paramMap.genphase2 = true;

    // Use jQuery.param to create the url to click on
    var devurl = "http://site.com/?"+ jQuery.param(paramMap);
    $('#mydev').click( function(){
        window.open(devurl);
    });
});