在JS中获取URL参数并嵌入到JS函数中

时间:2010-08-27 08:15:26

标签: javascript

我有一个图表库,用于绘制一些数据。

此数据作为GET参数在URL中传递,格式如下:plottedgraph.html?case_id=4&otherparam=blabla

然后我有我的HTML页面,我尝试使用GUP函数捕获该GET参数(如下所示)并将其添加到我的JS函数中,如下所示:"http://www.url.com/showgraph.do?case_id=" + gup('case_id') + "&status=weighted"

这是整个HTML

<html>
<head>
    <!--[if IE]>
      <script type="text/javascript" src="js/excanvas.js"></script>
    <![endif]-->
    <script type="text/javascript" src="js/dygraph-combined.js"></script>

    <script type="javascript">
    function gup( name )
    {
      name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
      var regexS = "[\\?&]"+name+"=([^&#]*)";
      var regex = new RegExp( regexS );
      var results = regex.exec( window.location.href );
      if( results == null )
        return "";
      else
        return results[1];
    }
    </script>

</head>
<body>
<div id="graphdiv2" style="width:1800; height:900px;"></div>
<script type="text/javascript">
  g2 = new Dygraph(
    document.getElementById("graphdiv2"),
    "http://www.url.com/showgraph.do?case_id=" + gup('case_id') + "&status=weighted", // path to CSV file
    {
      showRoller: true,
      colors: ["rgb(255,100,100)",
               "rgb(72,61,139)"]
    }          // options
  );
</script>
</body>
</html>

不幸的是,在这种情况下,JS函数无法识别出case_id = 4 ......

你能告诉我我做错了吗?

1 个答案:

答案 0 :(得分:2)

调试你的gup()函数有点困难,你可以尝试:

var params={};
document.location.search.replace(/\??(?:([^=]+)=([^&]*)&?)/g, function () {
    function decode(s) {
        return decodeURIComponent(s.split("+").join(" "));
    }
    params[decode(arguments[1])] = decode(arguments[2]);
});

您现在可以在params对象中找到您的参数,因此params ['case_id']将保存您正在寻找的值。