2

我正在尝试alertjquery 中的查询字符串参数,因为我需要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 对象时的屏幕截图。

在此处输入图像描述

4

1 回答 1

1

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

您可以使用正则表达式来剖析重写的 URL,不需要 jQuery。假设 yourproductId总是以 开头-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

productIdnull如果没有与正则表达式匹配,则将是。

示例小提琴

于 2013-10-22T12:23:10.470 回答