Как читать запрос на получение, используя Javascript? - PullRequest
5 голосов
/ 17 ноября 2010

Итак, у меня есть html-страница с именем A.html, она была названа следующим образом: B.html: A.html?varString="bla-bla-bla" Правильно ли отправлять аргументы в JS?Как разобрать аргументы из JS?

(без использования каких-либо фреймворков, таких как Jquery, работа в IE6, FireFox 3)

Ответы [ 5 ]

7 голосов
/ 17 ноября 2010

Вот функция для разбора строки запроса.Передайте ему имя параметра, и оно вернет значение.

function getQueryVariable(variable)
{ 
  var query = window.location.search.substring(1); 
  var vars = query.split("&"); 
  for (var i=0;i<vars.length;i++)
  { 
    var pair = vars[i].split("="); 
    if (pair[0] == variable)
    { 
      return pair[1]; 
    } 
  }
  return -1; //not found 
}
7 голосов
/ 17 ноября 2010

Использовать location.search:

alert(location.search); // will display everything from the ? onwards

Возможно, вы захотите отделить различные переменные от строки запроса, чтобы иметь доступ к ним по имени:

var request = {};
var pairs = location.search.substring(1).split('&');
for (var i = 0; i < pairs.length; i++) {
  var pair = pairs[i].split('=');
  request[pair[0]] = pair[1];
}

Тогда вы можете получить к нему доступ как request['varString'], и это даст вам "bla-bla-bla".

1 голос
/ 18 ноября 2010

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

function gup( name )
{
   name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
   var regexS = "[\\?&]"+name+"=([^&#]*)";
   var regex = new RegExp( regexS );
   var results = regex.exec( window.location.href );
   if( results == null )
      return "";
   else
      return results[1];
}

Я не проверял это, но я почти уверен, что это сработает.

просто используйте его как: gup('parameter') и он вернет вам значение параметра.

0 голосов
/ 02 января 2016

Благодаря новому интерфейсу URLSearchParams это становится проще:

var url = new URL("https://example.org/?foo=bar&foo2=bar2");
var params = url.searchParams;

// Access to a variable
console.log(params.get("foo"));

// Loop over params
for (var key of params.keys()) {
    console.log(params.get(key));
}

Вам следует проверить Mozilla Developer Network на совместимость браузера, поскольку это новый API.

0 голосов
/ 24 ноября 2010

Чтобы проанализировать строку запроса через JS, вы можете просмотреть использовать что-то вроде

function getQueryValue(param) {
        var queryStringArray = querystring && querystring.substring(1).split("&");
        for (var i=0, length = queryStringArray.length; i < length; i++) {
             var token = queryStringArray[i],
                 firstPart = token && token.substring(0, token.indexOf("="));
             if (firstPart === param ) {
                 return token.substring(token.indexOf("=") + 1, token.length);
            }
        }
 }

например. Учитывая URL "http://domain.com.au? Aaa = bbb", вы можете назвать этот fn как getQeuryValue ("aaa"), и вы получите "bbb"

Я загрузил этот код в Gist (бит изменен для соответствия шаблону модуля).

...