如何在javascript中访问REAL查询字符串参数并进行URL重写

时间:2013-10-22 12:16:00

标签: javascript jquery asp.net query-string

我在jquery中尝试alert查询字符串参数因为我在页面加载时需要ID,所以我可以在加载控件时创建一些html元素。我似乎无法访问该参数,因为URL重写到位,URL看起来与原始URL不同。

原始网址

www.somesite.com/camping?ProductId=2457&ism=0&cl=PURPLE

浏览器中显示的URL

www.somesite.com/camping/travel-mug-16oz-double-wat-with-adapter-p2457.aspx?ism=0&cl=PURPLE

现在,如何在Jquery中访问ProductId查询字符串值。

的Jquery

$(document).ready(function () {
      var param = getParameterByName("ProductId");
     alert(param) // shows PURPLE as cl in URL is set to cl=PURPLE

});

function getParameterByName(name) {
      name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
      var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
                      results = regex.exec(location.search);
      return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}

编辑:

这是我尝试访问服务器端上的Querysting对象时的屏幕截图..

enter image description here

1 个答案:

答案 0 :(得分:1)

您当前的代码正在尝试访问查询字符串中的值,该值不再存在,因为它已在服务器上重写。

您可以使用正则表达式来剖析重写的URL,不需要jQuery。假设您的productId始终以-p开头,紧接着.aspx,那么这将有效:

var url = 'www.somesite.com/camping/travel-mug-16oz-double-wat-with-adapter-p2457.aspx?ism=0&cl=PURPLE'
var matches = url.match(/-p(\d+)\.aspx/);
var productId = matches && matches[1];
console.log(productId); // = 2457
如果与正则表达式不匹配,

productId将为null

Example fiddle