javascript Request.QueryString - PullRequest
       3

javascript Request.QueryString

4 голосов
/ 10 июня 2011

Как запросить строку запроса с использованием JavaScript из URL

, например: http://localhost:1247/portal/alias__MySite/lang__en/tabid__3381/default.aspx

Я хочу получить tabid ...

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

Вышеупомянутый код работает только на странице aspx, но мне это не нужно, есть идеи?спасибо

Ответы [ 5 ]

2 голосов
/ 01 февраля 2017

Теперь есть новый 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 голос
/ 01 июня 2013

Попробуйте, это прекрасно работает для меня.

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");
1 голос
/ 10 июня 2011

Не знаю почему, но я всегда находил javascript для извлечения данных из строки запроса немного странным. если вам не нужно это значение при начальной загрузке страницы, то, возможно, вы могли бы использовать Request.QueryString в коде и установить значение в скрытое поле, из которого ваш JavaScript будет читать?

0 голосов
/ 01 июня 2013

Это то, что я использовал:

<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>

Вы можете заменить document.write на предупреждение, и вместо этого появится окно с предупреждением!

Я использовал это на своем сайте.Это еще не сделано, но когда это произойдет, это будет на zducttapestuff.com

Вывод будет выглядеть следующим образом: Вы вошли в систему как Cheese Pizza!так как пароль будет показан в URL.

0 голосов
/ 10 июня 2011

Могу поспорить, что существует перезапись на стороне сервера (DotNetNuke?), Поэтому aspx.cs "видит" цель перенаправления, которая содержит правильную строку QueryString.

Для клиента вы должны использовать другой механизм, потому что браузер только «видит» общедоступный URL. В этом случае, Regex, который выбирает число после 'tabid_' и до следующего слеша, должен работать. Это будет тот же номер (идентификатор страницы?), Который «видит» страница aspx.

...