2014-09-15 3 views
0

У меня есть URL-адрес, который содержит два параметра.Получить значения всех одинаковых параметров из url в jQuery

Ex: https://www.google.com.vn/search?q=news&oq=news&aqs=chrome..69i57j69i60l3.299j0j4&sourceid=chrome&es_sm=93&ie=UTF-8#q=bbc

Parameter 1: q=news 

Parameter 2:q=bbc 

Я хочу, чтобы получить все значения имеют один и тот же параметр, но я могу только получить значение первого параметра.

Это мой код:

function getParameterByName(name, url) { 
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); 
var regex = new RegExp("[\\?&#]" + name + "=([^&#]*)"), 
    results = regex.exec(url); 
return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); 
} 
+0

, пожалуйста, отправьте свой код jquery .. –

+0

Не думаю, что вы можете иметь два значения параметра с одинаковым именем, вы можете использовать 'q1' и' q2'. –

+0

Второй номер происходит из 'location.hash'. –

ответ

0

Используйте $(location).attr('href'); и анализировать с помощью параметров сами

0

, что я попробовал только о том, как вы можете получить все paremater.

var a="https://www.google.com.vn/search?q=news&oq=news&aqs=chrome..69i57j69i60l3.299j0j4&sourceid=chrome&es_sm=93&ie=UTF-8#q=bbc" 
var b= a.split("?")[1] 
b.split("&") 

С помощью этой техники вы получите все параметры.
Вам необходимо преобразовать этот код в требуемый код.

0

Первый q в строк запроса, второй в хэш. Вы должны разобрать их в JavaScript:

QueryString

// the method is taken from http://stackoverflow.com/a/3855394/3971911 
var qs = (function(a) { 
    if (a == "") return {}; 
    var b = {}; 
    for (var i = 0; i < a.length; ++i) 
    { 
     var p=a[i].split('='); 
     if (p.length != 2) continue; 
     b[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " ")); 
    } 
    return b; 
})(window.location.search.substr(1).split('&')); 

Hash

// the method is taken from http://stackoverflow.com/a/11920807/3971911 
function getHashValue(key) { 
    return location.hash.match(new RegExp(key+'=([^&]*)'))[1]; 
} 

Теперь вы можете использовать их как это:

alert(qs['q']); // news 
alert(getHashValue('q')); // bbc 
0

попробовать это:

function getParameterByName(name, url,position) { 
    url=position==1?url:url.substr(url.lastIndexOf('#')); 
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); 
    var regex = new RegExp("[\\?&#]" + name + "=([^&#]*)"), 
    results = regex.exec(url); 
    return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); 
} 

var url='https://www.google.com.vn/search?q=news&oq=news&aqs=chrome..69i57j69i60l3.299j0j4&sourceid=chrome&es_sm=93&ie=UTF-8#q=bbc'; 

alert(getParameterByName('q',url,1)); 
alert(getParameterByName('q',url,2)); 

Demo

0

Помимо упражнений в кодировании, вероятно, вам лучше использовать существующий код.

Что-то вроде:

Pros:

  • Он имеет испытания
  • Это было более полезные глаза отлитые над ним (угадывание здесь).
  • Люди, которые, вероятно, способствовали этому, вероятно, использовали его.
  • Если у вас есть проблемы с этим, у тех, кто участвует, будет интерес к решению проблемы, поскольку они, вероятно, используют ее.

Минусы:

  • нет!: D
Смежные вопросы