Ответ 1
http://example.com/index.php?foo=bar
location.search
> ?foo=bar
location.search.substring(1)
> foo=bar
Таким образом, код вернет все параметры запроса без знака вопроса.
Я хочу знать, что фактически делает location.search.substring(1)
. Я видел этот код на каком-то сайте. Я пытался печатать с помощью alert
, но это не дало никакого результата. Это должно предупредить местоположение HREF?
alert(location.search.substring(1))
http://example.com/index.php?foo=bar
location.search
> ?foo=bar
location.search.substring(1)
> foo=bar
Таким образом, код вернет все параметры запроса без знака вопроса.
Свойство location.search содержит строку запроса URI (включая?), если таковая имеется.
Пример:
http://www.example.org/index.php?param=arg
location.search is ?param=arg
Итак, ваш код сокращает лидирующие позиции? и возвращает param=arg
.
Свойство поиска возвращает часть запроса URL-адреса, включая знак вопроса (?).
Это означает, что location.search.substring(1)
должен возвращать данные без вопросительного знака.
// http://www.example.com/index.html
console.log(location.search.substring(1)); // no query string, so displays nothing
// http://www.example.com/index.html?property=value
console.log(location.search.substring(1)); // should display "property=value"
"Запрос porpotion" - это строка запроса:
http://www.example.com/?property=value&property2=value
| query string |
например. если у вас есть следующий URL
http://www.example.org/index.htm?Browser=Netscape
то window.location.search
вернет ?Browser=Netscape
как строку
Сейчас 2018 год, это то, как вы делаете это в 2018 году.
Пример URL:
http://localhost:10/mapserver1/viewer/?config=viewer_simple1&url=https://maps2.dcgis.dc.gov/dcgis/rest/services/Zoning/MapServer&zoom=17&lat=38.917292&long=-77.036420
Мой рабочий код для извлечения каждого параметра запроса:
var ___zoom;
var ___lat;
var ___long;
var ___basemap;
var ___type;
var ___url;
var ___title;
var ___opacity;
if ( location.search.match(/zoom=([^&]*)/i) )
{
___zoom = location.search.match(/zoom=([^&]*)/i)[1];
}
if ( location.search.match(/lat=([^&]*)/i) )
{
___lat = location.search.match(/lat=([^&]*)/i)[1];
}
if (location.search.match(/long=([^&]*)/i))
{
___long = location.search.match(/long=([^&]*)/i)[1];
}
if (location.search.match(/basemap=([^&]*)/i))
{
___basemap = location.search.match(/basemap=([^&]*)/i)[1];
}
if (location.search.match(/type=([^&]*)/i))
{
___type = location.search.match(/type=([^&]*)/i)[1];
}
if (location.search.match(/url=([^&]*)/i))
{
___url = location.search.match(/url=([^&]*)/i)[1];
}
if (location.search.match(/title=([^&]*)/i))
{
___title = location.search.match(/title=([^&]*)/i)[1];
}
if (location.search.match(/opacity=([^&]*)/i))
{
___opacity = location.search.match(/opacity=([^&]*)/i)[1];
}
//console.log(location.search.match(/zoom=([^&]*)/i)[0]); // 'zoom=17'
//console.log(location.search.match(/zoom=([^&]*)/i)[1]); // '17'
console.log(___zoom);
console.log(___lat);
console.log(___long);
console.log(___basemap);
console.log(___type);
console.log(___url);
console.log(___title);
console.log(___opacity);
Возвращает строку запроса без начального вопросительного знака. Вы увидите только результат, если на странице есть строка запроса, например. http://www.example.com?parameter=value.
location.search возвращает строку запроса, включая начальный знак вопроса. Метод substr - удалить начальный вопросительный знак из возвращенной строки запроса.
Причина, по которой вы не получаете никаких результатов в alert(), заключается в том, что вы пытаетесь прочитать строку запроса на веб-сайте, на котором ее нет.
Вот как вы тестируете:
var container = {};
location.search.split('&').toString().substr(1).split(",").forEach(item => {
container[item.split("=")[0]] = decodeURIComponent(item.split("=")[1]) ? item.split("=")[1]: "No query strings available" ;
});
console.log(container);