2010-11-17 3 views
4

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

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

+0

Возможно. duplicate [Как получить значения строки запроса в JavaScript?] (Http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript) –

ответ

6

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

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

Использование 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

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

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

Для разбора строки запроса через 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 (бит . модифицированный быть уступчивым с шаблоном модуля)

0

Благодаря новому интерфейсу 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

Смежные вопросы