javascript Request.QueryString

时间:2011-06-10 08:56:35

标签: c# javascript asp.net query-string

如何使用URL中的javascript请求查询字符串

例如:http://localhost:1247/portal/alias__MySite/lang__en/tabid__3381/default.aspx

我想 tabid ...

 var tabid = '<%= Request.QueryString["tabid"] %> ';

以上代码仅适用于aspx页面  但我不需要它,任何想法?感谢

5 个答案:

答案 0 :(得分:2)

现在有一个新的api URLSearchParams。将其与window.location.search

结合使用
var urlParams = new URLSearchParams(window.location.search);
console.log(urlParams.get('tabid'));

如果您的浏览器不支持URLSearchParams,则可以创建自定义后备功能:

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

答案 1 :(得分:1)

不知道为什么,但我总是发现查询字符串数据的javascript有点hacky。如果您在初始页面加载时不需要此值,那么也许您可以在代码中使用Request.QueryString并将值设置为隐藏字段,您的javascript将从中读取?

答案 2 :(得分:1)

试试这个,它对我来说很完美。

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, " "));
}

var tabId=getParameterByName("tabid");

答案 3 :(得分:0)

我打赌有一个服务器端重写(DotNetNuke?),所以aspx.cs“看到”包含正确QueryString的重定向目标。

对于客户端,您必须使用其他机制,因为浏览器只“看到”公共URL。在这种情况下,选择“tabid_”后面和下一个斜杠之前的数字的正则表达式应该可以正常工作。这将是aspx页面“看到”的相同数字(页面ID?)。

答案 4 :(得分:0)

这就是我使用的:

<script type="text/javascript">   

function QueryString(key) {  
//Get the full querystring  
fullQs = window.location.search.substring(1);  
//Break it down into an array of name-value pairs  
qsParamsArray = fullQs.split("&");  
//Loop through each name-value pair and   
//return value in there is a match for the given key  
for (i=0;i<qsParamsArray.length;i++) {  
strKey = qsParamsArray[i].split("=");  
    if (strKey[0] == key) {  
        return strKey[1];  
    }  
}  
}  

//Test the output (Add ?fname=Cheese&lname=Pizza to your URL)  
//You can change the variable to whatever it is you need to do for example, you could  
//change firstname to id and lastname to userid and just change the reference in the
//document.write/alert box
var firstname = QueryString("fname"); 
var lastname = QueryString("lname");   
document.write("You are now logged in as " + firstname + " " + lastname + "!");  

</script>

您可以将alert.write替换为alert,它会为您提供一个警告框!

我在我的网站上使用过这个。它还没有完成,但是它将在zducttapestuff.com

输出将如下所示:您现在以Cheese Pizza登录!

这对于密码非常不安全,因为密码将显示在网址中。