Làm cách nào để có được tham số URL bằng jQuery hoặc JavaScript đơn giản?


619

Tôi đã thấy rất nhiều ví dụ về jQuery mà kích thước tham số và tên không xác định.

URL của tôi sẽ chỉ có 1 chuỗi:

http://example.com?sent=yes

Tôi chỉ muốn phát hiện:

  1. senttồn tại?
  2. Có bằng "có" không?




Giải pháp tốt nhất tôi từng thấy [tại đây] [1] [1]: stackoverflow.com/a/901144/3106590
hmfarimani

1
Hiện tại đã có một plugin / thư viện cho cái này, được gọi là URI.js: github.com/medialize/URI.js
alexw 13/2/2016

Câu trả lời:


1211

Giải pháp tốt nhất tại đây .

var getUrlParameter = function getUrlParameter(sParam) {
    var sPageURL = window.location.search.substring(1),
        sURLVariables = sPageURL.split('&'),
        sParameterName,
        i;

    for (i = 0; i < sURLVariables.length; i++) {
        sParameterName = sURLVariables[i].split('=');

        if (sParameterName[0] === sParam) {
            return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);
        }
    }
};

Và đây là cách bạn có thể sử dụng chức năng này với giả sử URL là
http://dummy.com/?technology=jquery&blog=jquerybyexample.

var tech = getUrlParameter('technology');
var blog = getUrlParameter('blog');

8
Cảm ơn! Nhưng khi sao chép điều này, tôi đã tìm thấy một sự ngạc nhiên khó chịu, liên quan đến một khoảng trắng có độ rộng bằng không (\ u200b) cho đến cuối ở đó. Làm cho kịch bản có một lỗi cú pháp vô hình.
Christofer Ohlsson

11
Trả lại một falsehoặc nullcho tìm kiếm trống
Stefano Caravana

4
Giải pháp này hoạt động khá tốt đối với tôi Tôi vừa mới sử dụng var sPageURL = decodeURI (window.location.search.subopes (1)); để chuyển đổi% 20 ký tự thành khoảng trắng và tôi cũng trả về một chuỗi trống thay vì không có gì nếu tham số không khớp.
Barshe

18
Tôi đã cập nhật câu trả lời để bao gồm tất cả các thay đổi mã nhận xét phía trên nhận xét này.
Rob Evans

7
Việc giải mã phải được thực hiện trên giá trị tham số (như Iouri gợi ý). Nếu việc giải mã được thực hiện trên url (như trong câu trả lời), nó sẽ không hoạt động chính xác nếu có mã hóa &hoặc =trong một giá trị tham số.
zakinster

288

Giải pháp từ năm 2020

Chúng tôi có: http://example.com?sent=yes

let searchParams = new URLSearchParams(window.location.search)

gửi tồn tại ?

searchParams.has('sent') // true

bằng "có" không?

let param = searchParams.get('sent')

và sau đó chỉ cần so sánh nó.


16
Tôi nghĩ rằng điều này không được hỗ trợ trên các trình duyệt, vậy tại sao người ta nên sử dụng nó? tham khảo - developer.mozilla.org/en-US/docs/Web/API/URLSearchParams
p_champ

1
@p_champ bạn nói đúng. Nhưng bạn có thể sử dụng polyfill cho URLSearchParams
Optio

2
hiện không hoạt động trong IE / Edge, do đó, hãy phát hiện tính năng: if ('URLSearchParams' in window) { // Browser supports URLSearchParams} Xem tại đây
mfgmicha

4
Đủ tốt cho tôi và đối tượng dự định của tôi. caniuse.com/#feat=urlsearchparams
jontsai

4
@p_champ Edge đã nhận hỗ trợ vào v17 (tháng 4 năm 2018). Hãy để IE chết.
Ryan DuVal

198

Đoạn mã jQuery để lấy các biến động được lưu trữ trong url dưới dạng tham số và lưu trữ chúng dưới dạng các biến JavaScript sẵn sàng để sử dụng với các tập lệnh của bạn:

$.urlParam = function(name){
    var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
    if (results==null) {
       return null;
    }
    return decodeURI(results[1]) || 0;
}

example.com?param1=name¶m2=&id=6

$.urlParam('param1'); // name
$.urlParam('id');        // 6
$.urlParam('param2');   // null

ví dụ params với dấu cách

http://www.jquery4u.com?city=Gold Coast
console.log($.urlParam('city'));  
//output: Gold%20Coast



console.log(decodeURIComponent($.urlParam('city'))); 
//output: Gold Coast

12
Lưu ý: Bạn cần giải mã trong trường hợp có các ký tự đặc biệt là tham số hoặc Umlaute, v.v. Vì vậy, thay vì return results[1] || 0;phải như vậyreturn decodeURI(results[1]) || 0;
Kai Noack

Chỉ tò mò, tại sao nó cần || 0một phần vì đã có kiểm tra kết quả, phải chăng nó luôn trả về mảng khớp?
AirWick219

@ AirWick219 một lỗi an toàn thích hợp. mặc dù dư thừa, không bao giờ đau lòng để thận trọng
zanderwar

2
Đây rất có thể là nguồn ban đầu: sitepoint.com/url-parameter-jquery nhưng câu trả lời này có một số ý tưởng mới được thêm vào
bgmCoder

1
Không chắc chắn rằng nó đáng để sử dụng jQuery cho việc này.
Quentin 2

88

Tôi luôn luôn dán nó như là một dòng. Bây giờ params có các vars:

params={};location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi,function(s,k,v){params[k]=v})

đa tuyến:

var params={};
window.location.search
  .replace(/[?&]+([^=&]+)=([^&]*)/gi, function(str,key,value) {
    params[key] = value;
  }
);

như một chức năng

function getSearchParams(k){
 var p={};
 location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi,function(s,k,v){p[k]=v})
 return k?p[k]:p;
}

mà bạn có thể sử dụng như:

getSearchParams()  //returns {key1:val1, key2:val2}

hoặc là

getSearchParams("key1")  //returns val1

Hack xấu xí sửa đổi chuỗi tìm kiếm ... nhưng không yêu cầu mô-đun bên ngoài hoặc jquery. Tôi thích nó.
Bryce

4
@Bryce Nó thực sự không sửa đổi chuỗi tìm kiếm. .replace thực sự trả về một chuỗi mới và các chuỗi được trả về đó được xử lý vào đối tượng params.
AwokeKnowing

Đẹp, ngắn và trái với giải pháp được chấp nhận, không cần phải lặp lại url mỗi khi bạn cần một giá trị. Có thể được cải thiện một chút với replace(/[?&;]+([^=]+)=([^&;]*)/giđể điều chỉnh lại ";" nhân vật như một dấu phân cách quá.
Le Droid

rõ ràng và không đau một lớp lót, tốt hơn so với câu trả lời được chấp nhận cho tôi, không có libs thêm.
Sam

Đây là những gì người ta sẽ sử dụng nếu một người sử dụng băm thay vì dấu phân cách truy vấn GET (dấu hỏi): var params={};window.location.hash.replace(/[#&]+([^=&]+)=([^&]*)/gi,function(str,key,value){params[key] = value;}); Điều này hữu ích cho những thứ như AJAX trong đó hàm băm trong cửa sổ được cập nhật với ajax-request nhưng cũng là một người dùng đi đến một uri chứa một hàm băm.
Tommie

48

Một chức năng thay thế khác ...

function param(name) {
    return (location.search.split(name + '=')[1] || '').split('&')[0];
}

Tên cần phải là một chuỗi. Làm việc như một bùa mê ~
mintedsky

2
Đây là yêu thích của tôi. +1 Lưu ý mặc dù đây là loại tìm kiếm "kết thúc bằng". Ví dụ: nếu bạn chuyển vào "Điện thoại" cho tên và cũng có một trường có tên là "HomePhone", nó có thể trả về giá trị của sai nếu nó xuất hiện trước trong url.
efreed

2
Cái này sai! Ví dụ param('t') == param('sent') == 'yes'trong ví dụ OP. Đây là một sửa chữa : return (location.search.split(new RegExp('[?&]' + name + '='))[1] || '').split('&')[0]; Cũng lưu ý rằng bạn không thể biết nếu param tồn tại bởi vì bạn nhận được chuỗi rỗng cho các tham số bị thiếu.
oriadam

Rất đơn giản và thanh lịch. Hoạt động như một giấc mơ. Cảm ơn bạn.
Anjana Silva

// (để buộc toàn bộ khóa tồn tại thay vì chỉ phần cuối của khóa)return (location.search.split('?' + name + '=')[1] || location.search.split('&' + name + '=')[1] || '').split('&')[0];
Aaron

45

Có thể là quá muộn. Nhưng phương pháp này rất dễ dàng và đơn giản

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.url.js"></script>

<!-- URL:  www.example.com/correct/?message=done&year=1990 -->

<script type="text/javascript">
$(function(){
    $.url.attr('protocol')  // --> Protocol: "http"
    $.url.attr('path')      // --> host: "www.example.com"
    $.url.attr('query')         // --> path: "/correct/"
    $.url.attr('message')       // --> query: "done"
    $.url.attr('year')      // --> query: "1990"
});

CẬP NHẬT
Yêu cầu url plugin: plugins.jquery.com/url
Cảm ơn -Ripounet


2
Bất cứ ai quyết định về điều này nên kiểm tra repo đầu tiên. Cách sử dụng đã thay đổi. $ .url.attr ('message') trở thành $ .url ("truy vấn") và nó chỉ cung cấp truy vấn đầy đủ! Để chỉ nhận được một tham số, tôi đã phải: $ .url ("truy vấn"). Split ("=") [1] liên kết github url
pseudozach

34

Hoặc bạn có thể sử dụng chức năng nhỏ gọn này, bởi vì tại sao các giải pháp quá phức tạp?

function getQueryParam(param, defaultValue = undefined) {
    location.search.substr(1)
        .split("&")
        .some(function(item) { // returns first occurence and stops
            return item.split("=")[0] == param && (defaultValue = item.split("=")[1], true)
        })
    return defaultValue
}

trông thậm chí còn tốt hơn khi được đơn giản hóa và onelined:

tl; dr giải pháp một dòng

var queryDict = {};
location.search.substr(1).split("&").forEach(function(item) {queryDict[item.split("=")[0]] = item.split("=")[1]})
kết quả:
queryDict ['sent'] // không xác định hoặc 'value'

Nhưng nếu bạn có các ký tự được mã hóa hoặc các khóa đa trị thì sao?

Bạn thấy rõ hơn câu trả lời này: Làm cách nào tôi có thể nhận các giá trị chuỗi truy vấn trong JavaScript?

Sneak đỉnh

"?a=1&b=2&c=3&d&e&a=5&a=t%20e%20x%20t&e=http%3A%2F%2Fw3schools.com%2Fmy%20test.asp%3Fname%3Dståle%26car%3Dsaab"
> queryDict
a: ["1", "5", "t e x t"]
b: ["2"]
c: ["3"]
d: [undefined]
e: [undefined, "http://w3schools.com/my test.asp?name=ståle&car=saab"]

> queryDict["a"][1] // "5"
> queryDict.a[1] // "5"

3
phân tách chuỗi có khả năng nhanh hơn regex quá. Không phải đó là một yếu tố xem xét url sẽ chỉ được phân tích cú pháp một lần.
Patrick

Đây là giải pháp (giải pháp đầu tiên) hoạt động hoàn hảo cho tôi trên các trình duyệt - cảm ơn bạn!
NickyTheWbler

1
@NickyTheWbler Thật tuyệt khi nghe điều đó, cảm ơn bạn! Dù sao, hãy lưu ý rằng đây là một giải pháp rất đơn giản, nếu bạn nhận được các thông số url phức tạp có chứa các ký tự đặc biệt, tốt hơn bạn nên kiểm tra liên kết được cung cấp.
Qwerty

@Qwerty yup - trường hợp sử dụng của tôi rất đơn giản trong đó tham số luôn giống nhau, v.v (về cơ bản chính xác những gì OP yêu cầu) Cảm ơn một lần nữa!
NickyTheWbler

1
@BernardVanderBeken Thú vị, tôi đã sửa nó, dù sao, đó là giải pháp khá ngu ngốc, giải pháp ở phía dưới hỗ trợ các ký tự và mảng được mã hóa tốt hơn nhiều.
Qwerty

33

Sử dụng URLSearchParams:

var params = new window.URLSearchParams(window.location.search);
console.log(params.get('name'));

Hãy cẩn thận về khả năng tương thích (Chủ yếu là tốt, nhưng IE và Edge, có thể là câu chuyện khác nhau, hãy kiểm tra điều này để tham khảo tương thích: https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams )


Không phải hầu hết các trình duyệt có thể sử dụng điều này.
saf21

URLSearchParams thay thế ký tự đặc biệt "+" bằng dấu cách. Vì vậy, nếu thông số url của bạn có "+" trong đó, nó sẽ được thay thế.
Growler

11

Điều này là đơn giản và làm việc cho tôi

$.urlParam = function(name){
    var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
    return results[1] || 0;
}

vì vậy nếu url của bạn là http://www.yoursite.com?city=4

thử cái này

console.log($.urlParam('city'));

10

Có lẽ bạn có thể muốn cung cấp cho Nha sĩ JS một cái nhìn? (từ chối trách nhiệm: Tôi đã viết mã)

mã:

document.URL == "http://helloworld.com/quotes?id=1337&author=kelvin&message=hello"
var currentURL = document.URL;
var params = currentURL.extract();
console.log(params.id); // 1337
console.log(params.author) // "kelvin"
console.log(params.message) // "hello"

với Nha sĩ JS, về cơ bản bạn có thể gọi hàm extract () trên tất cả các chuỗi (ví dụ: document.URL.extract ()) và bạn lấy lại HashMap của tất cả các tham số được tìm thấy. Nó cũng có thể tùy chỉnh để đối phó với các dấu phân cách và tất cả.

Phiên bản rút gọn <1kb


5

Hy vọng điều này có thể giúp cho bạn.

 <script type="text/javascript">
   function getParameters() {
     var searchString = window.location.search.substring(1),
       params = searchString.split("&"),
       hash = {};

     if (searchString == "") return {};
     for (var i = 0; i < params.length; i++) {
       var val = params[i].split("=");
       hash[unescape(val[0])] = unescape(val[1]);
     }

     return hash;
   }

    $(window).load(function() {
      var param = getParameters();
      if (typeof param.sent !== "undefined") {
        // Do something.
      }
    });
</script>

5

function GetRequestParam(param)
{
	var res = null;
	try{
		var qs = decodeURIComponent(window.location.search.substring(1));//get everything after then '?' in URI
		var ar = qs.split('&');
		$.each(ar, function(a, b){
			var kv = b.split('=');
			if(param === kv[0]){
				res = kv[1];
				return false;//break loop
			}
		});
	}catch(e){}
	return res;
}



3

Có thư viện tuyệt vời này: https://github.com/allmarkedup/purl

cho phép bạn làm đơn giản

url = 'http://example.com?sent=yes';
sent = $.url(url).param('sent');
if (typeof sent != 'undefined') { // sent exists
   if (sent == 'yes') { // sent is equal to yes
     // ...
   }
}

Ví dụ giả sử bạn đang sử dụng jQuery. Bạn cũng có thể sử dụng nó như javascript đơn giản, cú pháp sau đó sẽ khác một chút.


1
Thư viện này không còn được duy trì nữa, tuy nhiên tôi sử dụng nó và nó rất tuyệt. Hãy chắc chắn rằng bạn sử dụng param not attr để lấy các tham số chuỗi truy vấn đó, vì tác giả đã đưa vào ví dụ của họ.
Hành động Dan

3

Đây có thể là quá mức cần thiết, nhưng có một thư viện khá phổ biến bây giờ đã có cho URI phân tích cú pháp, được gọi là URI.js .

Thí dụ

var uri = "http://example.org/foo.html?technology=jquery&technology=css&blog=stackoverflow";
var components = URI.parse(uri);
var query = URI.parseQuery(components['query']);
document.getElementById("result").innerHTML = "URI = " + uri;
document.getElementById("result").innerHTML += "<br>technology = " + query['technology'];

// If you look in your console, you will see that this library generates a JS array for multi-valued queries!
console.log(query['technology']);
console.log(query['blog']);
<script src="https://cdnjs.cloudflare.com/ajax/libs/URI.js/1.17.0/URI.min.js"></script>

<span id="result"></span>


3

Rất đơn giản, bạn có thể sử dụng bất kỳ url và nhận giá trị

function getParameterByName(name, url) {
    if (!url) url = window.location.href;
    name = name.replace(/[\[\]]/g, "\\$&");
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
    results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, " "));
}

Ví dụ sử dụng

// query string: ?first=value1&second=&value2
var foo = getParameterByName('first'); // "value1"
var bar = getParameterByName('second'); // "value2" 

Lưu ý: Nếu một tham số có mặt nhiều lần (? First = value1 & second = value2), bạn sẽ nhận được giá trị đầu tiên (value1) và giá trị thứ hai là (value2).


2

Điều này sẽ cung cấp cho bạn một đối tượng tốt để làm việc với

    function queryParameters () {
        var result = {};

        var params = window.location.search.split(/\?|\&/);

        params.forEach( function(it) {
            if (it) {
                var param = it.split("=");
                result[param[0]] = param[1];
            }
        });

        return result;
    }

Và sau đó;

    if (queryParameters().sent === 'yes') { .....

chia (/ \? | \ & /) điều này có nghĩa
Selva Ganapathi

2

Điều này dựa trên câu trả lời của Gazoris , nhưng URL giải mã các tham số để chúng có thể được sử dụng khi chúng chứa dữ liệu không phải là số và chữ cái:

function urlParam(name){
    var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
    // Need to decode the URL parameters, including putting in a fix for the plus sign
    // https://stackoverflow.com/a/24417399
    return results ? decodeURIComponent(results[1].replace(/\+/g, '%20')) : null;
}

2

Có một ví dụ khác với việc sử dụng thư viện URI.js.

Ví dụ trả lời các câu hỏi chính xác như đã hỏi.

var url = 'http://example.com?sent=yes';
var urlParams = new URI(url).search(true);
// 1. Does sent exist?
var sendExists = urlParams.sent !== undefined;
// 2. Is it equal to "yes"?
var sendIsEqualtToYes = urlParams.sent == 'yes';

// output results in readable form
// not required for production
if (sendExists) {
  console.log('Url has "sent" param, its value is "' + urlParams.sent + '"');
  if (urlParams.sent == 'yes') {
    console.log('"Sent" param is equal to "yes"');
  } else {
    console.log('"Sent" param is not equal to "yes"');
  }
} else {
  console.log('Url hasn\'t "sent" param');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/URI.js/1.18.2/URI.min.js"></script>


2
http://example.com?sent=yes

Giải pháp tốt nhất tại đây .

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

Với chức năng trên, bạn có thể nhận các giá trị tham số riêng lẻ:

getUrlParameter('sent');

Câu trả lời hoàn hảo!
Sriigate Ghosh

1

Phiên bản Coffeescript của câu trả lời của Sameer

getUrlParameter = (sParam) ->
  sPageURL = window.location.search.substring(1)
  sURLVariables = sPageURL.split('&')
  i = 0
  while i < sURLVariables.length
    sParameterName = sURLVariables[i].split('=')
    if sParameterName[0] == sParam
      return sParameterName[1]
    i++

1

Một cải tiến nhỏ cho câu trả lời của Sameer, tham số bộ đệm vào trạng thái đóng để tránh phân tích cú pháp và lặp qua tất cả các tham số mỗi lần gọi

var getURLParam = (function() {
    var paramStr = decodeURIComponent(window.location.search).substring(1);
    var paramSegs = paramStr.split('&');
    var params = [];
    for(var i = 0; i < paramSegs.length; i++) {
        var paramSeg = paramSegs[i].split('=');
        params[paramSeg[0]] = paramSeg[1];
    }
    console.log(params);
    return function(key) {
        return params[key];
    }
})();

1

Tôi sử dụng nó và nó hoạt động. http://codesheet.org/codesheet/NF246Tzs

function getUrlVars() {
    var vars = {};
    var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
    vars[key] = value;
    });
return vars;
}


var first = getUrlVars()["id"];

1

Với JavaScript vanilla, bạn có thể dễ dàng lấy tham số (location.search), lấy chuỗi con (không có?) Và biến nó thành một mảng, bằng cách chia nó bằng '&'.

Khi bạn lặp lại qua urlParams, sau đó bạn có thể phân tách chuỗi một lần nữa với '=' và thêm nó vào đối tượng 'params' làm đối tượng [elmement [0]] = phần tử [1]. Siêu đơn giản và dễ dàng để truy cập.

http://www.website.com/?error=userError&type=handwrwr

            var urlParams = location.search.substring(1).split('&'),
                params = {};

            urlParams.forEach(function(el){
                var tmpArr = el.split('=');
                params[tmpArr[0]] = tmpArr[1];
            });


            var error = params['error'];
            var type = params['type'];

1

Điều gì xảy ra nếu có & trong tham số URL như filename = "p & g.html" & uid = 66

Trong trường hợp này, chức năng 1 sẽ không hoạt động đúng. Vì vậy, tôi đã sửa đổi mã

function getUrlParameter(sParam) {
    var sURLVariables = window.location.search.substring(1).split('&'), sParameterName, i;

    for (i = 0; i < sURLVariables.length; i++) {
        sParameterName = sURLVariables[i].split('=');

        if (sParameterName[0] === sParam) {
            return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);
        }
    }
}

1

Phải thừa nhận rằng tôi đang thêm câu trả lời của mình cho một câu hỏi được trả lời quá mức, nhưng điều này có những ưu điểm của:

- Không phụ thuộc vào bất kỳ thư viện bên ngoài nào, kể cả jQuery

- Không gây ô nhiễm không gian tên hàm toàn cầu, bằng cách mở rộng 'Chuỗi'

- Không tạo bất kỳ dữ liệu toàn cầu nào và thực hiện xử lý không cần thiết sau khi tìm thấy kết quả khớp

- Xử lý các vấn đề mã hóa và chấp nhận (giả sử) tên tham số không được mã hóa

- Tránh forcác vòng lặp rõ ràng

String.prototype.urlParamValue = function() {
    var desiredVal = null;
    var paramName = this.valueOf();
    window.location.search.substring(1).split('&').some(function(currentValue, _, _) {
        var nameVal = currentValue.split('=');
        if ( decodeURIComponent(nameVal[0]) === paramName ) {
            desiredVal = decodeURIComponent(nameVal[1]);
            return true;
        }
        return false;
    });
    return desiredVal;
};

Sau đó, bạn sẽ sử dụng nó như:

var paramVal = "paramName".urlParamValue() // null if no match

1

Nếu bạn muốn tìm một tham số cụ thể từ một url cụ thể:

function findParam(url, param){
  var check = "" + param;
  if(url.search(check )>=0){
      return url.substring(url.search(check )).split('&')[0].split('=')[1];
  }
}  

var url = "http://www.yourdomain.com/example?id=1&order_no=114&invoice_no=254";  
alert(findParam(url,"order_no"));

0

Một giải pháp khác sử dụng jQuery và JSON, vì vậy bạn có thể truy cập các giá trị tham số thông qua một đối tượng.

var loc = window.location.href;
var param = {};
if(loc.indexOf('?') > -1)
{
    var params = loc.substr(loc.indexOf('?')+1, loc.length).split("&");

    var stringJson = "{";
    for(var i=0;i<params.length;i++)
    {
        var propVal = params[i].split("=");
        var paramName = propVal[0];
        var value = propVal[1];
        stringJson += "\""+paramName+"\": \""+value+"\"";
        if(i != params.length-1) stringJson += ",";
    }
    stringJson += "}";
    // parse string with jQuery parseJSON
    param = $.parseJSON(stringJson);
}

Giả sử URL của bạn là http://example.com/?search=hello+world&language=en&page=3

Sau đó, vấn đề chỉ là sử dụng các tham số như thế này:

param.language

trở về

en

Cách sử dụng hữu ích nhất của việc này là chạy nó khi tải trang và sử dụng biến toàn cục để sử dụng các tham số bất cứ nơi nào bạn có thể cần chúng.

Nếu tham số của bạn chứa các giá trị số thì chỉ cần phân tích giá trị.

parseInt(param.page)

Nếu không có tham số paramsẽ chỉ là một đối tượng trống.


-1
$.urlParam = function(name) {
  var results = new RegExp('[\?&amp;]' + name + '=([^&amp;#]*)').exec(window.location.href);
  return results[1] || 0;
}

& được mã hóa sai thành "& amp;" trong câu trả lời ở trên, hãy tham khảo câu trả lời đúng stackoverflow.com/a/25359264/73630
Palani

-1

dùng cái này

$.urlParam = function(name) {
  var results = new RegExp('[\?&amp;]' + name + '=([^&amp;#]*)').exec(window.location.href);
  return results[1] || 0;
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.