Làm cách nào để kiểm tra xem chuỗi truy vấn có chứa a q=trong đó bằng JavaScript hoặc jQuery hay không?
Câu trả lời:
var field = 'q';
var url = window.location.href;
if(url.indexOf('?' + field + '=') != -1)
return true;
else if(url.indexOf('&' + field + '=') != -1)
return true;
return false
?kodiaq=1, thì việc gọi url.indexOf('q=')mà không đặt tiền tố bằng &hoặc ?sẽ khiến bạn tin rằng qtham số hiện diện.
Bạn cũng có thể sử dụng một biểu thức chính quy:
/[?&]q=/.test(location.search)
if(/[?&]q=/.test(location.search)) { alert("match"); }(tôi đã hơi bối rối do nhận xét của @DragosDurlut. :)
Sử dụng URL:
url = new URL(window.location.href);
if (url.searchParams.get('test')) {
}
CHỈNH SỬA: nếu bạn buồn về khả năng tương thích, tôi thực sự khuyên bạn nên https://github.com/medialize/URI.js/ .
Mẫu mã javascript đơn giản trả lời câu hỏi của bạn theo nghĩa đen:
return location.search.indexOf('q=')>=0;
Mẫu mã javascript thuần túy cố gắng tìm xem tham số q có tồn tại hay không và nếu nó có giá trị:
var queryString=location.search;
var params=queryString.substring(1).split('&');
for(var i=0; i<params.length; i++){
var pair=params[i].split('=');
if(decodeURIComponent(pair[0])=='q' && pair[1])
return true;
}
return false;
fooq=bar
một biến thể khác, nhưng gần giống như giải pháp Gumbos:
var isDebug = function(){
return window.location.href.search("[?&]debug=") != -1;
};
Thử cái này
//field "search";
var pattern = /[?&]search=/;
var URL = location.search;
if(pattern.test(URL))
{
alert("Found :)");
}else{
alert("Not found!");
}
Trong các trình duyệt hiện đại, điều này đã trở nên dễ dàng hơn rất nhiều, nhờ vào URLSearchParamsgiao diện. Điều này xác định một loạt các phương thức tiện ích để làm việc với chuỗi truy vấn của một URL.
Giả sử rằng URL của chúng tôi là https://example.com/?product=shirt&color=blue&newuser&size=m, bạn có thể lấy chuỗi truy vấn bằng cách sử dụng window.location.search:
const queryString = window.location.search;
console.log(queryString);
// ?product=shirt&color=blue&newuser&size=m
Sau đó, bạn có thể phân tích cú pháp các tham số của chuỗi truy vấn bằng cách sử dụng URLSearchParams:
const urlParams = new URLSearchParams(queryString);
Sau đó, bạn có thể gọi bất kỳ phương thức nào của nó trên kết quả.
Ví dụ: URLSearchParams.get()sẽ trả về giá trị đầu tiên được liên kết với tham số tìm kiếm đã cho:
const product = urlParams.get('product')
console.log(product);
// shirt
const color = urlParams.get('color')
console.log(color);
// blue
const newUser = urlParams.get('newuser')
console.log(newUser);
// empty string
Bạn có thể sử dụng URLSearchParams.has()để kiểm tra xem một tham số nhất định có tồn tại hay không:
console.log(urlParams.has('product'));
// true
console.log(urlParams.has('paymentmethod'));
// false
Để đọc thêm vui lòng bấm vào đây .
Tôi đã sử dụng thư viện này trước đây, nó thực hiện khá tốt những gì bạn đang theo đuổi. Đặc biệt:-
qs.contains(name)
Returns true if the querystring has a parameter name, else false.
if (qs2.contains("name1")){ alert(qs2.get("name1"));}
Điều này sẽ giúp:
function getQueryParams(){
try{
url = window.location.href;
query_str = url.substr(url.indexOf('?')+1, url.length-1);
r_params = query_str.split('&');
params = {}
for( i in r_params){
param = r_params[i].split('=');
params[ param[0] ] = param[1];
}
return params;
}
catch(e){
return {};
}
}
var url = new URLSearchParams(location.search); url.has("my_great_query");trả vềtruenếu chuỗi truy vấn đó nằm trong url của bạn. Sau đó, bạn có thể nhận được giá trị của nó vớiurl.get("my_great_query");.