Làm cách nào để lấy các biến "GET" từ yêu cầu trong JavaScript?
Có jQuery hoặc YUI! có tính năng này được tích hợp sẵn không?
Làm cách nào để lấy các biến "GET" từ yêu cầu trong JavaScript?
Có jQuery hoặc YUI! có tính năng này được tích hợp sẵn không?
Câu trả lời:
Tất cả dữ liệu có sẵn dưới
window.location.search
bạn phải phân tích cú pháp chuỗi, ví dụ.
function get(name){
if(name=(new RegExp('[?&]'+encodeURIComponent(name)+'=([^&]*)')).exec(location.search))
return decodeURIComponent(name[1]);
}
chỉ cần gọi hàm với tên biến GET làm tham số, ví dụ.
get('foo');
hàm này sẽ trả về giá trị biến hoặc không xác định nếu biến không có giá trị hoặc không tồn tại
Bạn có thể sử dụng jquery.urlTôi đã làm như thế này:
var xyz = jQuery.url.param("param_in_url");
Nguồn cập nhật: https://github.com/allmarkedup/jQuery-URL-Parser
var xyz = jQuery.url().param("param_in_url");là cú pháp chính xác nơi jQuery.url()cung cấp URL của trang hiện tại. Xin vui lòng sửa chữa.
Chỉ cần bỏ hai xu của tôi vào, nếu bạn muốn một đối tượng chứa tất cả các yêu cầu
function getRequests() {
var s1 = location.search.substring(1, location.search.length).split('&'),
r = {}, s2, i;
for (i = 0; i < s1.length; i += 1) {
s2 = s1[i].split('=');
r[decodeURIComponent(s2[0]).toLowerCase()] = decodeURIComponent(s2[1]);
}
return r;
};
var QueryString = getRequests();
//if url === "index.html?test1=t1&test2=t2&test3=t3"
console.log(QueryString["test1"]); //logs t1
console.log(QueryString["test2"]); //logs t2
console.log(QueryString["test3"]); //logs t3
Lưu ý, khóa cho mỗi tham số nhận được đặt thành chữ thường. Vì vậy, tôi đã tạo một chức năng trợ giúp. Vì vậy, bây giờ nó không phân biệt chữ hoa chữ thường.
function Request(name){
return QueryString[name.toLowerCase()];
}
hãy thử đoạn mã dưới đây, nó sẽ giúp bạn nhận được các tham số GET từ url. để biết thêm chi tiết.
var url_string = window.location.href; // www.test.com?filename=test
var url = new URL(url_string);
var paramValue = url.searchParams.get("filename");
alert(paramValue)
Hôm nay, tôi cần đưa các tham số yêu cầu của trang vào một mảng kết hợp, vì vậy tôi đã tổng hợp các thông số sau với sự trợ giúp nhỏ từ bạn bè của tôi . Nó cũng xử lý các tham số mà không có as .=true
Với một ví dụ:
// URL: http://www.example.com/test.php?abc=123&def&xyz=&something%20else
var _GET = (function() {
var _get = {};
var re = /[?&]([^=&]+)(=?)([^&]*)/g;
while (m = re.exec(location.search))
_get[decodeURIComponent(m[1])] = (m[2] == '=' ? decodeURIComponent(m[3]) : true);
return _get;
})();
console.log(_GET);
> Object {abc: "123", def: true, xyz: "", something else: true}
console.log(_GET['something else']);
> true
console.log(_GET.abc);
> 123
Bạn có thể phân tích cú pháp URL của trang hiện tại để lấy các tham số GET. URL có thể được tìm thấy bằng cách sử dụng location.href.
Nếu bạn đã sử dụng jquery, có một plugin jquery xử lý điều này:
Một giải pháp thu nhỏ bản đồ:
var urlParams = location.search.split(/[?&]/).slice(1).map(function(paramPair) {
return paramPair.split(/=(.+)?/).slice(0, 2);
}).reduce(function (obj, pairArray) {
obj[pairArray[0]] = pairArray[1];
return obj;
}, {});
Sử dụng:
For url: http://example.com?one=1&two=2
console.log(urlParams.one) // 1
console.log(urlParams.two) // 2
map/reducechỉ là một cơ chế xử lý tập hợp: có thể được sử dụng với bất kỳ dữ liệu kích thước nào. nó nổi tiếng hơn với dữ liệu lớn do sẵn sàng được song song hóa
Không giống như các câu trả lời khác, UrlSearchParamsđối tượng có thể tránh sử dụng Regexes hoặc thao tác chuỗi khác và có sẵn ở hầu hết các trình duyệt hiện đại:
var queryString = location.search
let params = new URLSearchParams(queryString)
// example of retrieving 'id' parameter
let id = parseInt(params.get("id"))
console.log(id)
Hàm ở đây trả về tham số theo tên. Với những thay đổi nhỏ, bạn sẽ có thể trả về url cơ sở, tham số hoặc mỏ neo.
function getUrlParameter(name) {
var urlOld = window.location.href.split('?');
urlOld[1] = urlOld[1] || '';
var urlBase = urlOld[0];
var urlQuery = urlOld[1].split('#');
urlQuery[1] = urlQuery[1] || '';
var parametersString = urlQuery[0].split('&');
if (parametersString.length === 1 && parametersString[0] === '') {
parametersString = [];
}
// console.log(parametersString);
var anchor = urlQuery[1] || '';
var urlParameters = {};
jQuery.each(parametersString, function (idx, parameterString) {
paramName = parameterString.split('=')[0];
paramValue = parameterString.split('=')[1];
urlParameters[paramName] = paramValue;
});
return urlParameters[name];
}
Làm việc cho tôi trong
url: http: // localhost: 8080 / # /? access_token = 111
function get(name){
const parts = window.location.href.split('?');
if (parts.length > 1) {
name = encodeURIComponent(name);
const params = parts[1].split('&');
const found = params.filter(el => (el.split('=')[0] === name) && el);
if (found.length) return decodeURIComponent(found[0].split('=')[1]);
}
}