#c# #javascript #asp.net #query-string
#c# #javascript #asp.net #запрос-строка
Вопрос:
Как мне запросить строку запроса с помощью javascript из URL
например: http://localhost:1247/portal/alias__MySite/lang__en/tabid__3381/default.aspx
Я хочу получить tabid…
var tabid = '<%= Request.QueryString["tabid"] %> ';
Приведенный выше код работает только на странице aspx
но мне это не нужно, есть идеи? Спасибо
Комментарии:
1. Как я написал в своем ответе, я сомневаюсь, что вы ищете строку запроса, потому что на сервере есть механизм перезаписи. Вам нужно проанализировать URL, если вы хотите получить номер.
Ответ №1:
Теперь есть новый 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('[\?amp;]' name '=([^amp;#]*)');
var results = regex.exec(location.search);
return results === null ? '' : decodeURIComponent(results[1].replace(/ /g, ' '));
};
console.log(getParam('tabid'));
Ответ №2:
Не знаю почему, но я всегда находил javascript для выборки данных querystring немного хакерским. если вам не нужно это значение при начальной загрузке страницы, то, возможно, вы могли бы использовать Request .Введите строку запроса в код и задайте значение в скрытое поле, из которого ваш javascript будет считываться?
Ответ №3:
Попробуйте это, у меня это работает идеально.
function getParameterByName(name) {
name = name.replace(/[[]/, "\[").replace(/[]]/, "\]");
var regex = new RegExp("[\?amp;]" name "=([^amp;#]*)"),
results = regex.exec(location.search);
return results == null ? "" : decodeURIComponent(results[1].replace(/ /g, " "));
}
var tabId=getParameterByName("tabid");
Ответ №4:
Бьюсь об заклад, что на стороне сервера есть перезапись (DotNetNuke?), Поэтому aspx.cs «видит» цель перенаправления, которая содержит правильную строку запроса.
Для клиента вам придется использовать другой механизм, потому что браузер «видит» только общедоступный URL. В этом случае должно сработать регулярное выражение, которое выбирает число за ‘tabid_’ и перед следующей косой чертой. Это был бы тот же номер (идентификатор страницы?) которую «видит» страница aspx.
Ответ №5:
Это то, что я использовал:
<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("amp;");
//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=Cheeseamp;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.