আমার কয়েকটি জিইটি প্যারামিটার সহ নিম্নরূপে একটি URL রয়েছে:
www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5
আমার পুরো মানটি পাওয়া দরকার c
। আমি ইউআরএল পড়ার চেষ্টা করেছি, তবে আমি পেয়েছি মাত্র m2
। আমি জাভাস্ক্রিপ্ট ব্যবহার করে এটি কীভাবে করব?
আমার কয়েকটি জিইটি প্যারামিটার সহ নিম্নরূপে একটি URL রয়েছে:
www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5
আমার পুরো মানটি পাওয়া দরকার c
। আমি ইউআরএল পড়ার চেষ্টা করেছি, তবে আমি পেয়েছি মাত্র m2
। আমি জাভাস্ক্রিপ্ট ব্যবহার করে এটি কীভাবে করব?
উত্তর:
ক্যোয়ারী স্ট্রিং প্যারামিটারগুলি পরিচালনা করার জন্য জাভাস্ক্রিপ্ট নিজেই কিছু তৈরি করে নি।
একটি (আধুনিক) ব্রাউজারে চলমান কোড আপনি URL
অবজেক্টটি ব্যবহার করতে পারেন (যা জেএসগুলিতে ব্রাউজারগুলির সরবরাহ করা এপিআইয়ের অংশ):
var url_string = "http://www.example.com/t.html?a=1&b=3&c=m2-m3-m4-m5"; //window.location.href
var url = new URL(url_string);
var c = url.searchParams.get("c");
console.log(c);
পুরানো ব্রাউজারগুলির জন্য (ইন্টারনেট এক্সপ্লোরার সহ), আপনি এই পলিফিল বা এই উত্তরটির মূল সংস্করণ থেকে কোডটি ব্যবহার করতে পারেন যা পূর্বে রয়েছে URL
:
আপনি অ্যাক্সেস করতে পারতেন location.search
, যা ?
URL থেকে শেষ পর্যন্ত চরিত্র থেকে শুরু করে দেয় বা বিভাজন শনাক্তকারী (#foo) শুরু করবে, যেটি আগে আসে।
তারপরে আপনি এটি দিয়ে পার্স করতে পারেন:
function parse_query_string(query) {
var vars = query.split("&");
var query_string = {};
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split("=");
var key = decodeURIComponent(pair[0]);
var value = decodeURIComponent(pair[1]);
// If first entry with this name
if (typeof query_string[key] === "undefined") {
query_string[key] = decodeURIComponent(value);
// If second entry with this name
} else if (typeof query_string[key] === "string") {
var arr = [query_string[key], decodeURIComponent(value)];
query_string[key] = arr;
// If third or later entry with this name
} else {
query_string[key].push(decodeURIComponent(value));
}
}
return query_string;
}
var query_string = "a=1&b=3&c=m2-m3-m4-m5";
var parsed_qs = parse_query_string(query_string);
console.log(parsed_qs.c);
আপনি বর্তমান পৃষ্ঠার ইউআরএল থেকে ক্যোরিয় স্ট্রিংটি পেতে পারেন:
var query = window.location.search.substring(1);
var qs = parse_query_string(query);
URL
জন্য এক ছাড়াও URLSearchParams
। অথবা আপনি var c = url.searchParams.get("c");
উপরের উত্তরের লাইনটি প্রতিস্থাপন করে এই সমস্যাটি ডজ করতে পারেন var c = new URLSearchParams(window.location.search).get("c");
।
new URL()
তার যুক্তি হিসাবে সঠিকভাবে এনকোড করা URL পাওয়ার প্রত্যাশা করে । সম্পূর্ণ ইউআরএল নয়, কোনও ইউআরএল এর উপাদানটিdecodeURIComponent
পাস করার প্রত্যাশা করে ।
decodeURIComponent
এই ক্ষেত্রে ব্যবহার করা উচিত নয়
parse_query_string
ফাংশনের একটি ডবল ডিকোড করে value
। =
@ManelClos উল্লেখ ইস্যুকৃত দ্বিতীয় প্যারামিটারটি যোগ করে সুরাহা করা যেতে পারে 2
( limit
) এর vars[i].split()
।
বেশিরভাগ বাস্তবায়ন আমি দেখেছি ইউআরএল-ডিকোডিংয়ের নাম এবং মানগুলি মিস করে।
এখানে একটি সাধারণ ইউটিলিটি ফাংশন যা সঠিক URL- ডিকোডিংও করে:
function getQueryParams(qs) {
qs = qs.split('+').join(' ');
var params = {},
tokens,
re = /[?&]?([^=]+)=([^&]*)/g;
while (tokens = re.exec(qs)) {
params[decodeURIComponent(tokens[1])] = decodeURIComponent(tokens[2]);
}
return params;
}
//var query = getQueryParams(document.location.search);
//alert(query.foo);
qs.split('+').join(' ');
এবং না qs.replace(/\+/g, ' ');
?
function gup( name, url ) {
if (!url) url = location.href;
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( url );
return results == null ? null : results[1];
}
gup('q', 'hxxp://example.com/?q=abc')
এটি একটি মাত্র প্যারামিটার চেক করার একটি সহজ উপায়:
উদাহরণ ইউআরএল:
http://myserver/action?myParam=2
জাভাস্ক্রিপ্ট উদাহরণ:
var myParam = location.search.split('myParam=')[1]
যদি "মাইপ্যারাম" ইউআরএলে থাকে ... ভেরিয়েবল মাইপ্রামটিতে "2" থাকবে, অন্যথায় এটি অপরিজ্ঞাত হবে।
সম্ভবত আপনি একটি ডিফল্ট মান চান, সেক্ষেত্রে:
var myParam = location.search.split('myParam=')[1] ? location.search.split('myParam=')[1] : 'myDefaultValue';
আপডেট: এটি আরও ভাল কাজ করে:
var url = "http://www.example.com/index.php?myParam=384&login=admin"; // or window.location.href for current url
var captured = /myParam=([^&]+)/.exec(url)[1]; // Value is in [1] ('384' in our case)
var result = captured ? captured : 'myDefaultValue';
এবং ইউআরএল প্যারামিটারে পূর্ণ হলেও ঠিক এটি কাজ করে।
http://myserver/action?myParam=2&anotherParam=3
না উত্পাদ হবে "2"
কিন্তু "2&anotherParam=3"
।
(location.search.split('myParam=')[1]||'').split('&')[0]
- একাধিক প্যারাম বা সম্ভাব্য নিখোঁজ সহ ব্যবহার করতে myParam
।
location.search.split('myParam=').splice(1).join('').split('&')[0]
[?|&]
হিসাবে[?|&]myParam=([^&]+)
result = decodeURIComponent(result);
ব্রাউজার বিক্রেতারা ইউআরএল এবং ইউআরএল সার্চপ্যারামের মাধ্যমে এটি করার একটি স্থানীয় উপায় কার্যকর করেছে।
let url = new URL('http://www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5');
let searchParams = new URLSearchParams(url.search);
console.log(searchParams.get('c')); // outputs "m2-m3-m4-m5"
বর্তমানে ফায়ারফক্স, অপেরা, সাফারি, ক্রোম এবং এজগুলিতে সমর্থিত। ব্রাউজার সমর্থনের তালিকার জন্য এখানে দেখুন ।
https://developer.mozilla.org/en-US/docs/Web/API/URLS SearchParams https://developer.mozilla.org/en-US/docs/Web/API/URL/ URL
গুগলের প্রকৌশলী এরিক বিডেলম্যান অসমর্থিত ব্রাউজারগুলির জন্য এই পলিফিলটি ব্যবহার করার পরামর্শ দেন ।
new URLSearchParams("www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5").get('a')
ফিরছে কেন null
? (ক্রোম স্থিতিশীল)। b
এবং c
ভাল কাজ বলে মনে হচ্ছে।
url.searchParams
পরিবর্তে ব্যবহার করুন new URLSearchParams(url.search)
।
বহু যুগ আগেও আমি এটি পেয়েছি:
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi,
function(m,key,value) {
vars[key] = value;
});
return vars;
}
তারপরে এটিকে কল করুন:
var fType = getUrlVars()["type"];
decodeURIComponent()
মূল্য ব্যবহার করুন, কারণ আপনি সাধারণত এটির সাথে কাজ করতে চান; window.location.search
পরিবর্তে ব্যবহার করুন window.location.href
, কারণ আপনি কেবলমাত্র প্যারামিটারগুলিতেই আগ্রহী, পুরো ইউআরএল নয়।
var vars = {}; window.location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { vars[key] = value; }); return vars;
আপনি ক্যোয়ারী স্ট্রিংটি এতে পেতে পারেন location.search
, তারপরে আপনি প্রশ্ন চিহ্নের পরে সবকিছুকে বিভক্ত করতে পারেন:
var params = {};
if (location.search) {
var parts = location.search.substring(1).split('&');
for (var i = 0; i < parts.length; i++) {
var nv = parts[i].split('=');
if (!nv[0]) continue;
params[nv[0]] = nv[1] || true;
}
}
// Now you can get the parameters you want like so:
var abc = params.abc;
?array[]=1&array[]=2
উত্পাদন করে {"array[]": "2"}
, যা স্পষ্টতই ভুল।
[]
কিছু কিছু ক্ষেত্রে প্যাটার্নটির কেবল একটি অর্থ রয়েছে (যেমন, পিএইচপি), তবে অন্য নয়। সুতরাং "স্পষ্টত ভুল" নয় - কেবলমাত্র এমন একটি মানহীন কেস পরিচালনা করার জন্য প্রয়োগ করা হয়নি যা আপনাকে হ্যান্ডেল করার প্রয়োজন হতে পারে বা প্রয়োজনও হতে পারে।
আমি আরও সহজ এবং মার্জিত সমাধান লিখেছি।
var arr = document.URL.match(/room=([0-9]+)/)
var room = arr[1];
[0-9]
জন্য\d
ইউআরএল সার্চপ্যারাম ব্যবহার করে একটি দুর্দান্ত সহজ উপায় ।
function getParam(param){
return new URLSearchParams(window.location.search).get(param);
}
এটি বর্তমানে ক্রোম, ফায়ারফক্স, সাফারি, এজ এবং অন্যান্যগুলিতে সমর্থিত ।
এখানে একটি পুনরাবৃত্ত সমাধান রয়েছে যার কোনও রেইগেক্স নেই এবং এতে ন্যূনতম মিউটেশন রয়েছে (কেবলমাত্র প্যারাম অবজেক্টটি মিউটেটেড, যা আমি বিশ্বাস করি জেএসে অনিবার্য)।
এটি দুর্দান্ত কারণ এটি:
কোড:
var get_params = function(search_string) {
var parse = function(params, pairs) {
var pair = pairs[0];
var parts = pair.split('=');
var key = decodeURIComponent(parts[0]);
var value = decodeURIComponent(parts.slice(1).join('='));
// Handle multiple parameters of the same name
if (typeof params[key] === "undefined") {
params[key] = value;
} else {
params[key] = [].concat(params[key], value);
}
return pairs.length == 1 ? params : parse(params, pairs.slice(1))
}
// Get rid of leading ?
return search_string.length == 0 ? {} : parse({}, search_string.substr(1).split('&'));
}
var params = get_params(location.search);
// Finally, to get the param you want
params['c'];
আমি একটি ফাংশন তৈরি করেছি যা এটি করে:
var getUrlParams = function (url) {
var params = {};
(url + '?').split('?')[1].split('&').forEach(function (pair) {
pair = (pair + '=').split('=').map(decodeURIComponent);
if (pair[0].length) {
params[pair[0]] = pair[1];
}
});
return params;
};
5/26/2017 আপডেট করুন, এখানে একটি ES7 বাস্তবায়ন রয়েছে (ব্যাবেল প্রিসেট পর্যায় 0, 1, 2 বা 3 দিয়ে চলে):
const getUrlParams = url => `${url}?`.split('?')[1]
.split('&').reduce((params, pair) =>
((key, val) => key ? {...params, [key]: val} : params)
(...`${pair}=`.split('=').map(decodeURIComponent)), {});
কিছু পরীক্ষা:
console.log(getUrlParams('https://google.com/foo?a=1&b=2&c')); // Will log {a: '1', b: '2', c: ''}
console.log(getUrlParams('/foo?a=1&b=2&c')); // Will log {a: '1', b: '2', c: ''}
console.log(getUrlParams('?a=1&b=2&c')); // Will log {a: '1', b: '2', c: ''}
console.log(getUrlParams('https://google.com/')); // Will log {}
console.log(getUrlParams('a=1&b=2&c')); // Will log {}
আপডেট 3/26/2018, এখানে একটি টাইপস্ক্রিপ্ট বাস্তবায়ন:
const getUrlParams = (search: string) => `${search}?`
.split('?')[1]
.split('&')
.reduce(
(params: object, pair: string) => {
const [key, value] = `${pair}=`
.split('=')
.map(decodeURIComponent)
return key.length > 0 ? { ...params, [key]: value } : params
},
{}
)
আপডেট 2/13/2019, এখানে একটি আপডেট টাইপস্ক্রিপ্ট বাস্তবায়ন যা টাইপস্ক্রিপ্ট 3 এর সাথে কাজ করে।
interface IParams { [key: string]: string }
const paramReducer = (params: IParams, pair: string): IParams => {
const [key, value] = `${pair}=`.split('=').map(decodeURIComponent)
return key.length > 0 ? { ...params, [key]: value } : params
}
const getUrlParams = (search: string): IParams =>
`${search}?`.split('?')[1].split('&').reduce<IParams>(paramReducer, {})
Object {"": ""}
function getURLParameters(paramName)
{
var sURL = window.document.URL.toString();
if (sURL.indexOf("?") > 0)
{
var arrParams = sURL.split("?");
var arrURLParams = arrParams[1].split("&");
var arrParamNames = new Array(arrURLParams.length);
var arrParamValues = new Array(arrURLParams.length);
var i = 0;
for (i = 0; i<arrURLParams.length; i++)
{
var sParam = arrURLParams[i].split("=");
arrParamNames[i] = sParam[0];
if (sParam[1] != "")
arrParamValues[i] = unescape(sParam[1]);
else
arrParamValues[i] = "No Value";
}
for (i=0; i<arrURLParams.length; i++)
{
if (arrParamNames[i] == paramName)
{
//alert("Parameter:" + arrParamValues[i]);
return arrParamValues[i];
}
}
return "No Parameters Found";
}
}
ECMAScript 6 সমাধান:
var params = window.location.search
.substring(1)
.split("&")
.map(v => v.split("="))
.reduce((map, [key, value]) => map.set(key, decodeURIComponent(value)), new Map())
function urlParams(url) { const [, searchParams = ''] = url.split('?') return searchParams.split('&') .map(v => v.split('=')) .reduce((map, [key = '', value]) => key.length ? map.set(key, decodeURIComponent(value)) : map, new Map())
}
আমি ব্যবহার করি
function getVal(str) {
var v = window.location.search.match(new RegExp('(?:[\?\&]'+str+'=)([^&]+)'));
return v ? v[1] : null;
}
window.location.search
হ্যাশ লাইক অন্তর্ভুক্ত থাকবে না #id
।
location.href
পরিবর্তে ফলাফলের সাথে মেলে ব্যবহার করেছি location.search
you ধন্যবাদ আপনাকে।
আমি পার্সিউরি লাইব্রেরি ব্যবহার করি । এটি আপনাকে যা চাইছে ঠিক তা করতে সহায়তা করে:
var uri = 'www.test.com/t.html&a=1&b=3&c=m2-m3-m4-m5';
var c = uri.queryKey['c'];
// c = 'm2-m3-m4-m5'
এখানে আমার সমাধান। যেমন অ্যান্ডি ই এই প্রশ্নের জবাব দেওয়ার সময় পরামর্শ দিয়েছিলেন , আপনার স্ক্রিপ্টের পারফরম্যান্সের পক্ষে ভাল না যদি এটি বারবার বিভিন্ন রেজেক্স স্ট্রিং, চালিত লুপ ইত্যাদির জন্য একক মান অর্জন করে get সুতরাং, আমি একটি সহজ স্ক্রিপ্ট নিয়ে এসেছি যা একক বস্তুতে সমস্ত জিইটি প্যারামিটার দেয়। আপনার এটি একবারে কল করা উচিত, ফলাফলটি একটি ভেরিয়েবলের জন্য নির্ধারণ করুন এবং তারপরে, ভবিষ্যতের যে কোনও মুহুর্তে, উপযুক্ত কীটি ব্যবহার করে সেই ভেরিয়েবলের থেকে আপনার পছন্দসই মানটি পাওয়া উচিত। নোট করুন যে এটি ইউআরআই ডিকোডিংয়ের (যেমন% 20 টির মতো জিনিসগুলি) যত্ন করে এবং + একটি স্থান দিয়ে প্রতিস্থাপন করে:
function getUrlQueryParams(url) {
var queryString = url.split("?")[1];
var keyValuePairs = queryString.split("&");
var keyValue = [];
var queryParams = {};
keyValuePairs.forEach(function(pair) {
keyValue = pair.split("=");
queryParams[keyValue[0]] = decodeURIComponent(keyValue[1]).replace(/\+/g, " ");
});
return queryParams;
}
সুতরাং, আপনার দেখার জন্য এখানে স্ক্রিপ্টের কয়েকটি পরীক্ষা দেওয়া হল:
// Query parameters with strings only, no special characters.
var currentParams = getUrlQueryParams("example.com/foo?number=zero");
alert(currentParams["number"]); // Gives "zero".
// For the URL you stated above...
var someParams = getUrlQueryParams("www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5 ");
alert(someParams["c"]); // Gives "m2-m3-m4-m5".
// For a query params with URI encoding...
var someParams = getUrlQueryParams("www.example.com/t.html?phrase=a%20long%20shot&location=Silicon+Valley%2C+USA");
alert(someParams["phrase"]); // Gives "a long shot".
alert(someParams["location"]); // Gives "Silicon Valley, USA".
অথবা আপনি যদি ইউআরআই পার্সিং হুইল ব্যবহার করে ইউআরআই.জেএস পুনরায় উদ্ভাবন করতে না চান
Foo নামের একটি প্যারামিটারের মান পেতে:
new URI((''+document.location)).search(true).foo
কি যে হয়
এটির জন্য এখানে একটি মূর্খতা রয়েছে .... http://jsfiddle.net/m6tett01/12/
জন্য একক প্যারামিটার মান এই index.html মত কোড নিম্নলিখিত? বার্তা = 1 ব্যবহার,
$(window).load(function(){
queryString();
});
function queryString()
{
var queryString = window.location.search.substring(1);
var varArray = queryString.split("="); //eg. index.html?msg=1
var param1 = varArray[0];
var param2 = varArray[1];
}
জন্য সকল প্যারামিটার মান ব্যবহার নিম্নলিখিত কোড,
$(window).load(function(){
queryString();
});
function queryString()
{
var queryString = window.location.search;
var varArray = queryString.split("&");
for (var i=0;i<varArray.length;i++) {
var param = varArray[i].split("=");
//parameter-value pair
}
}
এখানে আমি একটি উদাহরণ পোস্ট করছি। তবে এটি jQuery এ। আশা করি এটি অন্যকে সহায়তা করবে:
<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"
});
</script>
সংক্ষিপ্ততম উপায়:
new URL(location.href).searchParams.get("my_key");
new URL(location.href).searchParams.get("my_key")
হয়ে যাবে বলে আমি সমর্থন URLSearchParams
করব।
এই প্রশ্নের অনেক উত্তর রয়েছে, তাই আমি অন্য একটি যুক্ত করছি।
/**
* parses and returns URI query parameters
*
* @param {string} param parm
* @param {bool?} asArray if true, returns an array instead of a scalar
* @returns {Object|Array}
*/
function getURIParameter(param, asArray) {
return document.location.search.substring(1).split('&').reduce(function(p,c) {
var parts = c.split('=', 2).map(function(param) { return decodeURIComponent(param); });
if(parts.length == 0 || parts[0] != param) return (p instanceof Array) && !asArray ? null : p;
return asArray ? p.concat(parts.concat(true)[1]) : parts.concat(true)[1];
}, []);
}
ব্যবহার:
getURIParameter("id") // returns the last id or null if not present
getURIParameter("id", true) // returns an array of all ids
খালি প্যারামিটার (এই কীগুলি ব্যতীত উপস্থিত "=value"
), এই স্কেলার এবং অ্যারে-ভিত্তিক মান পুনরুদ্ধার এপিআই উভয়ের এক্সপোজার, পাশাপাশি যথাযথ ইউআরআই উপাদান ডিকোডিং সহ এই অনুলিপিগুলি।
replace()
পদ্ধতিটি ব্যবহারের সবচেয়ে সহজ উপায় :urlStr
স্ট্রিং থেকে :
paramVal = urlStr.replace(/.*param_name=([^&]*).*|(.*)/, '$1');
বা বর্তমান ইউআরএল থেকে :
paramVal = document.URL.replace(/.*param_name=([^&]*).*|(.*)/, '$1');
ব্যাখ্যা:
document.URL
- ইন্টারফেস স্ট্রিং হিসাবে নথির অবস্থান (পৃষ্ঠা url) প্রদান করে।replace()
- পদ্ধতি কিছু বা একটি সব ম্যাচ দিয়ে একটি নতুন স্ট্রিং ফেরৎ প্যাটার্ন একটি দ্বারা প্রতিস্থাপিত প্রতিস্থাপন ।/.*param_name=([^&]*).*/
- নিয়মিত এক্সপ্রেশন প্যাটার্ন স্ল্যাশগুলির মধ্যে আবদ্ধ যার অর্থ:
.*
- শূন্য বা আরও কোনও অক্ষর,param_name=
- পরম নাম যা সার্চ করা হয়েছে,()
- নিয়মিত প্রকাশে গ্রুপ,[^&]*
- এক বা একাধিক অক্ষর বাদ দিয়ে &
,|
- বিকল্প,$1
- নিয়মিত প্রকাশে প্রথম গোষ্ঠীর রেফারেন্স।var urlStr = 'www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5';
var c = urlStr.replace(/.*c=([^&]*).*|(.*)/, '$1');
var notExisted = urlStr.replace(/.*not_existed=([^&]*).*|(.*)/, '$1');
console.log(`c === '${c}'`);
console.log(`notExisted === '${notExisted}'`);
তবুও আরেকটি পরামর্শ।
ইতিমধ্যে কিছু ভাল উত্তর রয়েছে তবে আমি এগুলি অযথা জটিল এবং বোঝা শক্ত found এটি সংক্ষিপ্ত, সহজ, এবং URL- এ টোকেন নামের সাথে সম্পর্কিত মূল নামগুলির সাথে একটি সাধারণ সংঘবদ্ধ অ্যারে প্রদান করে।
যারা শিখতে চান তাদের জন্য আমি নীচের মন্তব্যে একটি সংস্করণ যুক্ত করেছি।
নোট করুন এটি লুপের জন্য jQuery ($ .each) এর উপর নির্ভর করে যা আমি forEach এর পরিবর্তে প্রস্তাবিত করি। পুরানো ব্রাউজারগুলিতে যে কোনও নতুন ফাংশন সমর্থিত নয়, সমর্থন করার জন্য স্বতন্ত্র ফিক্সগুলিতে প্লাগিংয়ের চেয়ে বোর্ড জুড়ে jQuery ব্যবহার করে ক্রস ব্রাউজারের সামঞ্জস্যতা নিশ্চিত করা সহজ বলে মনে করি।
সম্পাদনা: আমি এটি লেখার পরে আমি এরিক এলিয়টের উত্তর লক্ষ্য করেছিলাম, যা প্রায় একই, যদিও এটি প্রতিটি ক্ষেত্রে ব্যবহার করে, আমি সাধারণত (উপরে বর্ণিত কারণে) এর বিপরীতে।
function getTokens(){
var tokens = [];
var query = location.search;
query = query.slice(1);
query = query.split('&');
$.each(query, function(i,value){
var token = value.split('=');
var key = decodeURIComponent(token[0]);
var data = decodeURIComponent(token[1]);
tokens[key] = data;
});
return tokens;
}
মন্তব্য করা সংস্করণ:
function getTokens(){
var tokens = []; // new array to hold result
var query = location.search; // everything from the '?' onward
query = query.slice(1); // remove the first character, which will be the '?'
query = query.split('&'); // split via each '&', leaving us an array of something=something strings
// iterate through each something=something string
$.each(query, function(i,value){
// split the something=something string via '=', creating an array containing the token name and data
var token = value.split('=');
// assign the first array element (the token name) to the 'key' variable
var key = decodeURIComponent(token[0]);
// assign the second array element (the token data) to the 'data' variable
var data = decodeURIComponent(token[1]);
tokens[key] = data; // add an associative key/data pair to our result array, with key names being the URI token names
});
return tokens; // return the array
}
নীচের উদাহরণগুলির জন্য আমরা এই ঠিকানাটি ধরে নেব:
http://www.example.com/page.htm?id=4&name=murray
আপনি ইউআরএল টোকেনকে নিজের ভেরিয়েবলের জন্য বরাদ্দ করতে পারেন:
var tokens = getTokens();
তারপরে প্রতিটি ইউআরএল টোকেনকে এই নামে উল্লেখ করুন:
document.write( tokens['id'] );
এটি "4" মুদ্রণ করবে।
আপনি সরাসরি ফাংশন থেকে আ টোকেন নামটি সরাসরি উল্লেখ করতে পারেন:
document.write( getTokens()['name'] );
... যা "মারে" মুদ্রণ করবে।
// Read a page's GET URL variables and return them as an associative array.
function getUrlVars()
{
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++)
{
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
// Usage for URL: http://my.site.com/location?locationId=53cc272c0364aefcb78756cd&shared=false
var id = getUrlVars()["locationId"];
এখান থেকে পেয়েছেন: http://jquery-howto.blogspot.ru/2009/09/get-url-paraters-values-with-jquery.html
সহজ উপায়
function getParams(url){
var regex = /[?&]([^=#]+)=([^&#]*)/g,
params = {},
match;
while(match = regex.exec(url)) {
params[match[1]] = match[2];
}
return params;
}
তারপরে এটিকে getParams (url) এর মতো কল করুন
আমার কাছে ইউআরএল জিইটি ভেরিয়েবলটি পড়ার এবং ইউআরএল প্যারামিটারের উপর ভিত্তি করে একটি ক্রিয়া সম্পূর্ণ করার দরকার ছিল। আমি সমাধানের জন্য উচ্চ এবং নিম্ন সন্ধান করেছি এবং কোডটির এই সামান্য অংশটি দেখতে পেয়েছি। এটি মূলত বর্তমান পৃষ্ঠার ইউআরএল পড়ে, ইউআরএলটিতে কিছু নিয়মিত অভিব্যক্তি সম্পাদন করে তারপরে কোনও এসোসিয়েটিভ অ্যারেতে url পরামিতিগুলি সংরক্ষণ করে, যা আমরা সহজেই অ্যাক্সেস করতে পারি।
সুতরাং উদাহরণ হিসাবে যদি আমাদের কাছে নীচে জাভাস্ক্রিপ্টের সাথে নীচে url থাকে।
http://TestServer/Pages/NewsArchive.aspx?year=2013&Month=July
পরামিতিগুলির আইডি এবং পৃষ্ঠাটি পেতে আমাদের যা করতে হবে তা হ'ল:
কোডটি হ'ল:
<script type="text/javascript">
var first = getUrlVars()["year"];
var second = getUrlVars()["Month"];
alert(first);
alert(second);
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
vars[key] = value;
});
return vars;
}
</script>
// http:localhost:8080/path?param_1=a¶m_2=b
var getParamsMap = function () {
var params = window.location.search.split("&");
var paramsMap = {};
params.forEach(function (p) {
var v = p.split("=");
paramsMap[v[0]]=decodeURIComponent(v[1]);
});
return paramsMap;
};
// -----------------------
console.log(getParamsMap()["param_1"]); // should log "a"
এলডন ম্যাকগুইনেসের এই গিস্টটি এখন পর্যন্ত আমি দেখেছি এমন একটি জাভাস্ক্রিপ্ট ক্যোয়ারী স্ট্রিং পার্সারের সর্বাধিক সম্পূর্ণ বাস্তবায়ন।
দুর্ভাগ্যক্রমে, এটি jQuery প্লাগইন হিসাবে লেখা।
আমি এটি ভ্যানিলা জেএসতে আবার লিখেছি এবং কয়েকটি উন্নতি করেছি:
function parseQuery(str) {
var qso = {};
var qs = (str || document.location.search);
// Check for an empty querystring
if (qs == "") {
return qso;
}
// Normalize the querystring
qs = qs.replace(/(^\?)/, '').replace(/;/g, '&');
while (qs.indexOf("&&") != -1) {
qs = qs.replace(/&&/g, '&');
}
qs = qs.replace(/([\&]+$)/, '');
// Break the querystring into parts
qs = qs.split("&");
// Build the querystring object
for (var i = 0; i < qs.length; i++) {
var qi = qs[i].split("=");
qi = qi.map(function(n) {
return decodeURIComponent(n)
});
if (typeof qi[1] === "undefined") {
qi[1] = null;
}
if (typeof qso[qi[0]] !== "undefined") {
// If a key already exists then make this an object
if (typeof (qso[qi[0]]) == "string") {
var temp = qso[qi[0]];
if (qi[1] == "") {
qi[1] = null;
}
qso[qi[0]] = [];
qso[qi[0]].push(temp);
qso[qi[0]].push(qi[1]);
} else if (typeof (qso[qi[0]]) == "object") {
if (qi[1] == "") {
qi[1] = null;
}
qso[qi[0]].push(qi[1]);
}
} else {
// If no key exists just set it as a string
if (qi[1] == "") {
qi[1] = null;
}
qso[qi[0]] = qi[1];
}
}
return qso;
}
// DEMO
console.log(parseQuery("?foo=bar&foo=boo&roo=bar;bee=bop;=ghost;=ghost2;&;checkbox%5B%5D=b1;checkbox%5B%5D=b2;dd=;http=http%3A%2F%2Fw3schools.com%2Fmy%20test.asp%3Fname%3Dst%C3%A5le%26car%3Dsaab&http=http%3A%2F%2Fw3schools2.com%2Fmy%20test.asp%3Fname%3Dst%C3%A5le%26car%3Dsaab"));
আরও দেখুন এই বেহালার ।
মার্জিত, কার্যকরী শৈলী সমাধান
আসুন কী হিসাবে ইউআরএল প্যারামের নাম সম্বলিত একটি বস্তু তৈরি করি, তারপরে আমরা সহজেই এর নামটি দিয়ে প্যারামিটারটি বের করতে পারি:
// URL: https://example.com/?test=true&orderId=9381
// Build an object containing key-value pairs
export const queryStringParams = window.location.search
.split('?')[1]
.split('&')
.map(keyValue => keyValue.split('='))
.reduce<QueryStringParams>((params, [key, value]) => {
params[key] = value;
return params;
}, {});
type QueryStringParams = {
[key: string]: string;
};
// Return URL parameter called "orderId"
return queryStringParams.orderId;
আমি যা করি তা এখানে:
var uriParams = getSearchParameters();
alert(uriParams.c);
// background functions:
// Get object/associative array of URL parameters
function getSearchParameters () {
var prmstr = window.location.search.substr(1);
return prmstr !== null && prmstr !== "" ? transformToAssocArray(prmstr) : {};
}
// convert parameters from url-style string to associative array
function transformToAssocArray (prmstr) {
var params = {},
prmarr = prmstr.split("&");
for (var i = 0; i < prmarr.length; i++) {
var tmparr = prmarr[i].split("=");
params[tmparr[0]] = tmparr[1];
}
return params;
}