ฉันจะตรวจสอบได้อย่างไรว่าสตริงการสืบค้นมี a q=อยู่โดยใช้ JavaScript หรือ jQuery
คำตอบ:
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นั้นการเรียกurl.indexOf('q=')โดยไม่ต้องนำหน้าด้วย&หรือ?จะทำให้คุณเชื่อว่ามีqพารามิเตอร์อยู่
คุณยังสามารถใช้นิพจน์ทั่วไป:
/[?&]q=/.test(location.search)
if(/[?&]q=/.test(location.search)) { alert("match"); } (ฉันสับสนเล็กน้อยเนื่องจากความคิดเห็นของ @DragosDurlut :)
ใช้URL:
url = new URL(window.location.href);
if (url.searchParams.get('test')) {
}
แก้ไข: ถ้าคุณเศร้าเกี่ยวกับความเข้ากันได้ผมขอแนะนำhttps://github.com/medialize/URI.js/
ตัวอย่างโค้ดจาวาสคริปต์ธรรมดาที่ตอบคำถามของคุณอย่างแท้จริง:
return location.search.indexOf('q=')>=0;
ตัวอย่างโค้ดจาวาสคริปต์ธรรมดาซึ่งพยายามค้นหาว่าพารามิเตอร์ q มีอยู่หรือไม่และมีค่าหรือไม่:
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
อีกหนึ่งตัวแปร แต่เกือบจะเหมือนกับโซลูชัน Gumbos:
var isDebug = function(){
return window.location.href.search("[?&]debug=") != -1;
};
ฟังก์ชันนี้ช่วยให้คุณรับพารามิเตอร์จาก URL ใน JS
function getQuery(q) {
return (window.location.search.match(new RegExp('[?&]' + q + '=([^&]+)')) || [, null])[1];
}
ลองทำตามนี้
//field "search";
var pattern = /[?&]search=/;
var URL = location.search;
if(pattern.test(URL))
{
alert("Found :)");
}else{
alert("Not found!");
}
ในเบราว์เซอร์สมัยใหม่สิ่งนี้กลายเป็นเรื่องง่ายขึ้นมากด้วยไฟล์ URLSearchParamsอินเทอร์เฟซ สิ่งนี้กำหนดโฮสต์ของวิธีการยูทิลิตี้เพื่อทำงานกับสตริงการสืบค้นของ URL
สมมติว่า URL ของเราคือhttps://example.com/?product=shirt&color=blue&newuser&size=mคุณสามารถดึงสตริงข้อความค้นหาโดยใช้window.location.search:
const queryString = window.location.search;
console.log(queryString);
// ?product=shirt&color=blue&newuser&size=m
จากนั้นคุณสามารถแยกวิเคราะห์พารามิเตอร์ของสตริงการสืบค้นโดยใช้URLSearchParams:
const urlParams = new URLSearchParams(queryString);
จากนั้นคุณสามารถเรียกใช้วิธีการใดก็ได้ในผลลัพธ์
ตัวอย่างเช่นURLSearchParams.get()จะส่งคืนค่าแรกที่เกี่ยวข้องกับพารามิเตอร์การค้นหาที่กำหนด:
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
คุณสามารถใช้URLSearchParams.has()เพื่อตรวจสอบว่ามีพารามิเตอร์อยู่หรือไม่:
console.log(urlParams.has('product'));
// true
console.log(urlParams.has('paymentmethod'));
// false
ฉันเคยใช้ห้องสมุดนี้มาก่อนซึ่งทำงานได้ดีในสิ่งที่คุณต้องการ โดยเฉพาะ: -
qs.contains(name)
Returns true if the querystring has a parameter name, else false.
if (qs2.contains("name1")){ alert(qs2.get("name1"));}
สิ่งนี้จะช่วยได้:
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");ส่งกลับtrueหากสตริงการสืบค้นนั้นอยู่ใน url ของคุณurl.get("my_great_query");แล้วคุณจะได้รับความคุ้มค่าด้วย