如何使用URL中的javascript请求查询字符串
例如:http://localhost:1247/portal/alias__MySite/lang__en/tabid__3381/default.aspx
我想 tabid ...
var tabid = '<%= Request.QueryString["tabid"] %> ';
以上代码仅适用于aspx页面 但我不需要它,任何想法?感谢
答案 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登录!
这对于密码非常不安全,因为密码将显示在网址中。