জাভাস্ক্রিপ্ট সহ URL এ একটি পরামিতি যুক্ত করা হচ্ছে


276

AJAX কলগুলি ব্যবহার করে এমন একটি ওয়েব অ্যাপ্লিকেশনটিতে আমাকে একটি অনুরোধ জমা দিতে হবে তবে URL এর শেষে একটি প্যারামিটার যুক্ত করতে হবে, উদাহরণস্বরূপ:

আসল ইউআরএল:

HTTP: //server/myapp.php আইডি = 10

ফলাফল URL:

http: //server/myapp.php? id = 10 & সক্ষম = সত্য

একটি জাভাস্ক্রিপ্ট ফাংশন সন্ধান করছেন যা প্রতিটি প্যারামিটারের জন্য ইউআরএল পার্স করে, তারপরে নতুন প্যারামিটার যুক্ত করে বা ইতিমধ্যে বিদ্যমান থাকলে মান আপডেট করে।


আপনি কি জাভাস্ক্রিপ্ট ইউআরএল পার্সার অনুসন্ধান করেছেন ? আপনি প্রতিটি &-পাঠককে আলাদা করে নিজের তৈরি করতে পারেন তবে বিদ্যমান কোডটি ব্যবহার করা সম্ভবত এটি সহজ।
সিএসএল

1
আমার একবারও এ জাতীয় দৃশ্য ছিল এবং আমি পিটার
ব্রমবার্গের

2
উইন্ডো হিস্টরি.পশ স্টেট ('পেজ 2', 'শিরোনাম', ডকুমেন্ট.লোকেশন + '/ পেজ 2.php'); পৃষ্ঠাটি লোড না করেই আপনার কাজটি করবে
রুতুঞ্জ শেলাদিয়া

1
এই প্রশ্নের এখানে ভালো উত্তর আছে stackoverflow.com/questions/6953944/...
rkb

জেএস হ'ল এই দরিদ্র ভাষায় এই অবিশ্বাস্য নেটিভ ...
বোহর

উত্তর:


191

একটি প্রাথমিক বাস্তবায়ন যা আপনাকে খাপ খাইয়ে নিতে হবে তা দেখতে এরকম কিছু দেখাচ্ছে:

function insertParam(key, value) {
    key = encodeURIComponent(key);
    value = encodeURIComponent(value);

    // kvp looks like ['key1=value1', 'key2=value2', ...]
    var kvp = document.location.search.substr(1).split('&');
    let i=0;

    for(; i<kvp.length; i++){
        if (kvp[i].startsWith(key + '=')) {
            let pair = kvp[i].split('=');
            pair[1] = value;
            kvp[i] = pair.join('=');
            break;
        }
    }

    if(i >= kvp.length){
        kvp[kvp.length] = [key,value].join('=');
    }

    // can return this or...
    let params = kvp.join('&');

    // reload page with new params
    document.location.search = params;
}

এটি রেজেক্স বা অনুসন্ধান ভিত্তিক সমাধানের তুলনায় প্রায় দ্বিগুণ দ্রুত, তবে এটি ক্যোরিস্ট্রিংয়ের দৈর্ঘ্য এবং কোনও মিলের সূচকের উপর সম্পূর্ণ নির্ভর করে


পরিপূর্ণতার জন্য আমি ধীর রেইজেক্স পদ্ধতিটি বেঞ্চমার্ক করেছি (প্রায় + 150% ধীর)

function insertParam2(key,value)
{
    key = encodeURIComponent(key); value = encodeURIComponent(value);

    var s = document.location.search;
    var kvp = key+"="+value;

    var r = new RegExp("(&|\\?)"+key+"=[^\&]*");

    s = s.replace(r,"$1"+kvp);

    if(!RegExp.$1) {s += (s.length>0 ? '&' : '?') + kvp;};

    //again, do what you will here
    document.location.search = s;
}

2
আবার ধন্যবাদ. দেখতে lessanvaezi.com/wp-content/uploads/2009/01/test.html পদ্ধতি মৌলিক তুলনা জন্য
Lessan Vaezi

16
ইউআরএল পরামিতিগুলি এড়াতে এস্কেপ () ব্যবহার করা ভুল। এটিতে তাদের "+" দিয়ে মানগুলি ভেঙে যায়। পরিবর্তে আপনার এনকোডিউআরআইসি কম্পোনেন্ট ব্যবহার করা উচিত। সম্পূর্ণ আলোচনা: xkr.us/articles/javascript/encode-compare
হিলডেব্র্যান্ড

4
আমি এই ফাংশনটি কল করছি এবং পৃষ্ঠাটি অসীম লুপে পুনরায় লোড হচ্ছে। সাহায্য করুন!
সুমিত

6
যখন কোনও প্যারামিটারগুলি ইতিমধ্যে url এ নেই আপনি একটি? & প্যারাম = মান পান
রায় টোলেডো

9
আপনি কি encodeURIComponentবরং ব্যবহার করা উচিত encodeURI? তা না হলে যে কোন অক্ষর পছন্দ =, &আপনার নাম বা মান দুর্নীতিগ্রস্ত হবে কোনো URI হবে।
অ্যাড্রিয়ান প্রানক

271

আপনি এর মধ্যে একটি ব্যবহার করতে পারেন:

উদাহরণ:

var url = new URL("http://foo.bar/?x=1&y=2");

// If your expected result is "http://foo.bar/?x=1&y=2&x=42"
url.searchParams.append('x', 42);

// If your expected result is "http://foo.bar/?x=42&y=2"
url.searchParams.set('x', 42);

2
আমি কোনও মান ছাড়াই একটি কোয়েরি প্যারামিটার যুক্ত করতে চাই, উদাহরণস্বরূপ যুক্ত XMLকরা http://foo.bar/?x=1&y=2যাতে শেষ ফলাফল হয় http://foo.bar/?x=1&y=2&XML। এটা কি সম্ভব? আমি চেষ্টা url.searchParams.set('XML');, url.searchParams.set('XML', null);এবং url.searchParams.set('XML', undefined);- কিন্তু কেউ কাজ করেন ক্রোম 63
আব্দুল

2
ধন্যবাদ! খুব খারাপ এটি আইওএস দ্বারা সমর্থিত নয়, এখনও। বিকাশকারী.মোজিলা.আর.ইন-
ইউএস

27
খুব খারাপ আইই এটি সমর্থন করে না।
স্পিডি

3
আইওএস এখন ইউআরএল সার্চপ্যারামগুলিকে সমর্থন করে (@ কঞ্জির মন্তব্যের 9 দিন পরে)
এমজেফ্রাইস

8
সুসংবাদ @ এমজেফ্রাইস! এখনও IE এবং নেটস্কেপ দ্বারা সমর্থিত নয়।
ভায়নি বাজার্ট

64

আপনার অবদানের জন্য আপনাকে সকলকে ধন্যবাদ। আমি অন্নাকাটা কোড ব্যবহার করেছি এবং সংশোধিত হয়েছি এমন ক্ষেত্রেও অন্তর্ভুক্ত করতে যেখানে ইউআরএলে কোনও জিজ্ঞাসার স্ট্রিং নেই। আশা করি এটি সাহায্য করবে।

function insertParam(key, value) {
        key = escape(key); value = escape(value);

        var kvp = document.location.search.substr(1).split('&');
        if (kvp == '') {
            document.location.search = '?' + key + '=' + value;
        }
        else {

            var i = kvp.length; var x; while (i--) {
                x = kvp[i].split('=');

                if (x[0] == key) {
                    x[1] = value;
                    kvp[i] = x.join('=');
                    break;
                }
            }

            if (i < 0) { kvp[kvp.length] = [key, value].join('='); }

            //this will reload the page, it's likely better to store this until finished
            document.location.search = kvp.join('&');
        }
    }

3
এটা তোলে থেকে পরিবর্তন ভাল হবে escape(key)এবং escape(value)করতে encodeURIComponentফাংশন।
kolobok

5
এই আসলে চেক করা উচিত if (kvp.length==1 && kvp[0]="")?
চার্লস এল।

@CharlesL। আরও ভালif (document.location.search)
লুবিমভ রোমান

58

এটি খুব সহজ সমাধান। এটি প্যারামিটারের অস্তিত্ব নিয়ন্ত্রণ করে না এবং এটি বিদ্যমান মান পরিবর্তন করে না। এটি আপনার প্যারামিটারটি শেষ করতে যোগ করে, তাই আপনি আপনার ব্যাক-এন্ড কোডটিতে সর্বশেষ মান পেতে পারেন।

function addParameterToURL(param){
    _url = location.href;
    _url += (_url.split('?')[1] ? '&':'?') + param;
    return _url;
}

6
আপনার ইউআরএলতে "#" অ্যাকাউন্ট করা উচিত .. কিছু কোড slাল এখানে দেওয়া আছে: url = (url.indexOf("?") != -1 ? url.split("?")[0]+"?"+part+"&"+url.split("?")[1] : (url.indexOf("#") != -1 ? url.split("#")[0]+"?"+part+"#"+ url.split("#")[1] : url+'?'+part));
ইউআরএলতে opালু রয়েছে

2
@ ক্যানজুরে এই জিনিসটিকে নরকের মতো দেখায় তবে আমি যা চেয়েছিলাম ঠিক তেমনটাই। ধন্যবাদ।
চাদ ভন নাউ

কেন একটি একক চরিত্রের অস্তিত্বের জন্য ইউআরএল বিভক্ত করবেন? এছাড়াও এনকোড করতে ভুলবেন না ... আরও কিছু জাতীয়function appendQs(url, key, value) { return url + (url.indexOf('?') >= 0 ? "&" : '?') + encodeURIComponent(key) + "=" + encodeURIComponent(value); };
ড্রজাউস

1
ঠিক কর. এই ফাংশনটি প্যারামিটারটি ইতিমধ্যে সরবরাহ করা হয়েছে কিনা তা পরীক্ষা করে না। আমি এটি পরীক্ষা করেছি এবং পেয়েছি https://localhost/preview/inventory.html?sortci=priceASC&sortci=priceASC&sortci=stitle
জে

@ জা, কেন এটি ঠিক করার দরকার নেই? আপনার অনুমান পরীক্ষা করুন। সদৃশ ক্যোয়ারী স্ট্রিং প্যারামিটারগুলি বৈধ, সদৃশ ফর্ম ক্ষেত্রের সমান। এইভাবে চেকবক্সের তালিকা কার্যকর করা হয়।
স্টিফেন

34

মাইক্রো অপ্টিমাইজড পারফরম্যান্সের পরিবর্তে সুগমতার জন্য ট্রেড অফ এবং কোডের কয়েকটি কম লাইন তৈরি করার জন্য এখানে একটি বিস্তৃত সরল সংস্করণ রয়েছে (এবং আমরা বাস্তবের দিক থেকে কয়েক মিলিসেকেন্ডের পার্থক্যের কথা বলছি ... বর্তমান প্রকৃতির কারণে (বর্তমান নথির অবস্থানের উপর অপারেটিং ), এটি সম্ভবত কোনও পৃষ্ঠায় একবার চালানো হবে)।

/**
* Add a URL parameter (or changing it if it already exists)
* @param {search} string  this is typically document.location.search
* @param {key}    string  the key to set
* @param {val}    string  value 
*/
var addUrlParam = function(search, key, val){
  var newParam = key + '=' + val,
      params = '?' + newParam;

  // If the "search" string exists, then build params from it
  if (search) {
    // Try to replace an existance instance
    params = search.replace(new RegExp('([?&])' + key + '[^&]*'), '$1' + newParam);

    // If nothing was replaced, then add the new param to the end
    if (params === search) {
      params += '&' + newParam;
    }
  }

  return params;
};

আপনি তখন এটি এর মতো ব্যবহার করতে পারেন:

document.location.pathname + addUrlParam(document.location.search, 'foo', 'bar');

1
+1 আমি পছন্দ করি আপনি কীভাবে ডকুমেন্ট.লোকেশন.সর্চ ছাড়া অন্য কিছু নির্দিষ্ট করতে পারেন
মুহাদ

1
+1 আশ্চর্যজনক, আমি সম্মত হই যে এই ক্ষেত্রে মাইক্রো-অপ্টিমাইজেশনের চেয়ে সুশাসন আরও গুরুত্বপূর্ণ এবং কেউ এই পদ্ধতি গ্রহণ করেছে দেখে আমি আনন্দিত। @ মুহদ সম্ভবত আপনি মন্তব্যটি লেখার সময় এটি জেএস ইঞ্জিনের একটি বাগ ছিল, তবে আমি এই প্রসঙ্গে '$ 1' পরীক্ষা করেছি এবং এটি দুর্দান্ত কাজ করে।
জেএমটায়লার

সমাধানের জন্য অনেক ধন্যবাদ, যদিও আমি কোনও মান প্রতিস্থাপন করতে চাইলে আমি আটকে যাই এবং সেখানে ইতিমধ্যে একটি প্যারামিটার রয়েছে। পরিবর্তে এ & এটি $ 1 লিখেছিল
কোডব্রিও

2
গ্যারেট: আপনি কী উত্তরটি ঠিক করতে পারবেন তাই এটি বিদ্যমান পরামিতিগুলিকে সঠিকভাবে প্রতিস্থাপন করে? এটি RegExp এর [\?&]সাথে প্রতিস্থাপনের বিষয় মাত্র ([\?&])(আমি কেবল এটি নিজে সম্পাদনা করতে পারি তবে আমি নিশ্চিত নই যে সম্প্রদায়ের নীতি উত্তরে বাগগুলি ঠিক করার অনুমতি দেয় কিনা)।
opyh

এটি " ডোমেন.টલ્ડ " এর মতো "এর পরিবর্তে" & "যুক্ত করার মতো url নিয়ে কাজ করছে না ?"
ব্যবহারকারী 706420

20

/**
* Add a URL parameter 
* @param {string} url 
* @param {string} param the key to set
* @param {string} value 
*/
var addParam = function(url, param, value) {
   param = encodeURIComponent(param);
   var a = document.createElement('a');
   param += (value ? "=" + encodeURIComponent(value) : ""); 
   a.href = url;
   a.search += (a.search ? "&" : "") + param;
   return a.href;
}

/**
* Add a URL parameter (or modify if already exists)
* @param {string} url 
* @param {string} param the key to set
* @param {string} value 
*/
var addOrReplaceParam = function(url, param, value) {
   param = encodeURIComponent(param);
   var r = "([&?]|&amp;)" + param + "\\b(?:=(?:[^&#]*))*";
   var a = document.createElement('a');
   var regex = new RegExp(r);
   var str = param + (value ? "=" + encodeURIComponent(value) : ""); 
   a.href = url;
   var q = a.search.replace(regex, "$1"+str);
   if (q === a.search) {
      a.search += (a.search ? "&" : "") + str;
   } else {
      a.search = q;
   }
   return a.href;
}

url = "http://www.example.com#hashme";
newurl = addParam(url, "ciao", "1");
alert(newurl);

এবং দয়া করে নোট করুন যে ক্যোয়ারী স্ট্রিংয়ে যুক্ত হওয়ার আগে প্যারামিটারগুলি এনকোড করা উচিত।

http://jsfiddle.net/48z7z4kx/


ছোট মেমরি ফাঁস - আপনি ফিরে আসার আগে নথিতে যুক্ত হওয়া অ্যাঙ্কর উপাদানটি সরাতে চাইবেন।
শিং

@ ফ্রিদেব, না, আমি নিশ্চিত নই ;) একটি প্রামাণিক উত্স খুঁজে পেতে আমার বেশ কষ্ট হচ্ছে তবে প্রমাণগুলি আপনাকে সঠিক বলে বোঝায়। যেহেতু তৈরি উপাদানটি কখনই ডিওএমের সাথে সংযুক্ত থাকে না, ভেরিয়েবল সুযোগের বাইরে চলে গেলে এটি পরিষ্কার করা উচিত । পার্শ্ব প্রতিক্রিয়াগুলির ক্ষেত্রে DOM এপিআই বিশেষভাবে ডিজাইন করা হয়নি, তাই আমি অত্যধিক সতর্ক।
শিং 6

এই সমাধানটি ইউআরএলগুলিতে একটি পিছনে স্ল্যাশ যুক্ত করে যার কোনও পাথ নেই এবং প্যারামিটারগুলি পুনরায় সাজিয়েছে, যা অপ্রয়োজনীয় এবং সম্ভবত অবাঞ্ছিত পরিবর্তন। এটি বিদ্যমান পরামিতিগুলির কোনও মূল্য নেই (যেমন, যেমন http://abc.def/?a&b&b) প্রতিস্থাপনের পরিবর্তে সংযোজন করে ।
অ্যাডাম লেগেট

@ অ্যাডম লেগেট একটি অনুরোধ প্যারামিটারের কোনও মূল্য নেই তখন ঘটে যাওয়া বাগটি নির্দেশ করার জন্য ধন্যবাদ, আমি আমার উত্তরটি ঠিক করে রেখেছি। আপনি যে বাকী অদ্ভুত আচরণের কথা বলছেন, যদি আপনি সঠিক হন তবে HTML অ্যাঙ্কর অবজেক্ট দ্বারা উত্পন্ন হয় যা সাধারণত একটি স্ট্যান্ডার্ড ব্রাউজার উপাদান। আমি দ্বিগুণ চেক করার পরামর্শ দিচ্ছি কারণ খুব সম্ভবত ব্রাউজার অপ্রয়োজনীয় বা অযাচিত আচরণ যুক্ত করে adds
ফ্রিডেভ

1
অ্যাডপ্যারাম ফাংশনটির উদ্দেশ্য হ'ল প্যারামিটারে একাধিকবার যুক্ত হওয়া এবং সম্ভবত আপনার জানা উচিত যে আপনি একই মানটিকে একাধিকবারও পাস করতে পারেন। stackoverflow.com/questions/24059773/...
freedev

19

আমার একটি 'ক্লাস' রয়েছে যা এটি করে এবং এটি এখানে:

function QS(){
    this.qs = {};
    var s = location.search.replace( /^\?|#.*$/g, '' );
    if( s ) {
        var qsParts = s.split('&');
        var i, nv;
        for (i = 0; i < qsParts.length; i++) {
            nv = qsParts[i].split('=');
            this.qs[nv[0]] = nv[1];
        }
    }
}

QS.prototype.add = function( name, value ) {
    if( arguments.length == 1 && arguments[0].constructor == Object ) {
        this.addMany( arguments[0] );
        return;
    }
    this.qs[name] = value;
}

QS.prototype.addMany = function( newValues ) {
    for( nv in newValues ) {
        this.qs[nv] = newValues[nv];
    }
}

QS.prototype.remove = function( name ) {
    if( arguments.length == 1 && arguments[0].constructor == Array ) {
        this.removeMany( arguments[0] );
        return;
    }
    delete this.qs[name];
}

QS.prototype.removeMany = function( deleteNames ) {
    var i;
    for( i = 0; i < deleteNames.length; i++ ) {
        delete this.qs[deleteNames[i]];
    }
}

QS.prototype.getQueryString = function() {
    var nv, q = [];
    for( nv in this.qs ) {
        q[q.length] = nv+'='+this.qs[nv];
    }
    return q.join( '&' );
}

QS.prototype.toString = QS.prototype.getQueryString;

//examples
//instantiation
var qs = new QS;
alert( qs );

//add a sinle name/value
qs.add( 'new', 'true' );
alert( qs );

//add multiple key/values
qs.add( { x: 'X', y: 'Y' } );
alert( qs );

//remove single key
qs.remove( 'new' )
alert( qs );

//remove multiple keys
qs.remove( ['x', 'bogus'] )
alert( qs );

আমি টুস্ট্রিং পদ্ধতিটি ওভাররাইড করেছি তাই কিউএস :: getQueryString কল করার দরকার নেই, আপনি কিউএস :: টু স্ট্রিং ব্যবহার করতে পারেন বা যেমন আমি উদাহরণগুলিতে করেছি কেবলমাত্র স্ট্রিংয়ে জড়িত বস্তুর উপর নির্ভর করে।


19
const urlParams = new URLSearchParams(window.location.search);

urlParams.set('order', 'date');

window.location.search = urlParams;

.set প্রথম Agrument কী, দ্বিতীয়টির মান।


1
এর সরলতা পছন্দ করুন এবং এটি নেটিভ ব্রাউজারের পদ্ধতিগুলি ব্যবহার করে
জুয়ান সোলানো

2
এটি সঠিক উত্তর এবং শীর্ষে ভোট দেওয়া উচিত। এই নতুন এপিআইএল ইউআরএল প্রক্রিয়াজাতকরণের জন্য চূড়ান্ত
অ্যান্টনি

8

আপনি যদি url সহ একটি স্ট্রিং থাকে যা আপনি পরম দিয়ে সাজতে চান, আপনি এটি চেষ্টা করতে পারেন:

urlstring += ( urlstring.match( /[\?]/g ) ? '&' : '?' ) + 'param=value';

এর মানে ? প্যারামিটারের উপসর্গ হবে, তবে আপনার যদি ইতিমধ্যে থাকে ? মধ্যে urlstringতুলনায় & উপসর্গ হতে হবে।

encodeURI( paramvariable )আপনি যদি প্যারামিটারকে হার্ডকোড না করে থাকেন তবে আমি এটি করারও পরামর্শ দেব paramvariable; অথবা এটিতে যদি আপনার মজার চরিত্র থাকে।

ফাংশনটির ব্যবহারের জন্য জাভাস্ক্রিপ্ট ইউআরএল এনকোডিং দেখুন encodeURI


7

এটি একটি ক্যোয়ারী প্যারামিটার যুক্ত করার একটি সহজ উপায়:

const query = new URLSearchParams(window.location.search);
query.append("enabled", "true");

এবং এটি এখানে এটি আরও বেশি

সমর্থন চশমা নোট করুন ।


4
দেখে মনে হচ্ছে এটি ইন্টারনেট এক্সপ্লোরারের কোনও সংস্করণে সমর্থিত নয়
ম্যাক্স

মোবাইলের জন্য আদর্শ। যখন ইন্টারনেট এক্সপ্লোরার আমার মোবাইল ডিভাইসে প্রদর্শিত হবে, আমি এটিকে ফেলে দেব। :-)
স্টিল্ল্যাটমিলিনাক্স

@ ম্যাক্স আপনি ঠিক আইই / ইডিজি খুব বেশি সমর্থন করেন না। সমর্থিত
T04435

6

পরীক্ষা করে দেখুন https://github.com/derek-watson/jsUri

জাভাস্ক্রিপ্টে উরি এবং ক্যোয়ারী স্ট্রিং ম্যানিপুলেশন।

এই প্রকল্পটি স্টিভেন লেভিথনের চমৎকার পার্সিউরি নিয়মিত অভিব্যক্তি গ্রন্থাগারকে অন্তর্ভুক্ত করেছে। আপনি সমস্ত আকার এবং মাপের ইউআরএল নিরাপদে পার্স করতে পারেন তবে অবৈধ বা ঘৃণ্য।


404 - অনুরোধ করা URL / p / jsuri / এই সার্ভারে পাওয়া যায় নি। আমরা এই সবই জানি.
অ্যালিগমা

1
দেখে মনে হচ্ছে এটি সরানো হয়েছে। আমি ইউআরএল আপডেট করেছি। ভাগ্য সুপ্রসন্ন হোক!
চার্লি লিয়াং ইউয়ান

আপনার উত্তরের সাথে সম্পর্কিত বিবরণ অন্তর্ভুক্ত করুন, কেবল একটি লিঙ্ক নয়।
jhpratt GOFUNDME RELICENSING

6

?কিছুক্ষণ আমরা শেষ ইউআরএলে দেখতে পেয়েছি, আমি এমন কিছু সমাধান পেয়েছি যা ফলাফলগুলি উত্পন্ন করে file.php?&foo=bar। আমি আমার নিজের সমাধান হিসাবে নিখুঁতভাবে আমার সাথে কাজ করতে এসেছি!

location.origin + location.pathname + location.search + (location.search=='' ? '?' : '&') + 'lang=ar'

নোট: location.origin IE তে কাজ করে না, এখানে তার ফিক্স হয়


6

নিম্নলিখিত ফাংশনটি আপনাকে ইউআরএল থেকে বা থেকে পরামিতিগুলি যুক্ত করতে, আপডেট করতে এবং মুছতে সহায়তা করবে।

// example1and

var myURL = '/search';

myURL = updateUrl(myURL,'location','california');
console.log('added location...' + myURL);
//added location.../search?location=california

myURL = updateUrl(myURL,'location','new york');
console.log('updated location...' + myURL);
//updated location.../search?location=new%20york

myURL = updateUrl(myURL,'location');
console.log('removed location...' + myURL);
//removed location.../search

// example2

var myURL = '/search?category=mobile';

myURL = updateUrl(myURL,'location','california');
console.log('added location...' + myURL);
//added location.../search?category=mobile&location=california

myURL = updateUrl(myURL,'location','new york');
console.log('updated location...' + myURL);
//updated location.../search?category=mobile&location=new%20york

myURL = updateUrl(myURL,'location');
console.log('removed location...' + myURL);
//removed location.../search?category=mobile

// example3

var myURL = '/search?location=texas';

myURL = updateUrl(myURL,'location','california');
console.log('added location...' + myURL);
//added location.../search?location=california

myURL = updateUrl(myURL,'location','new york');
console.log('updated location...' + myURL);
//updated location.../search?location=new%20york

myURL = updateUrl(myURL,'location');
console.log('removed location...' + myURL);
//removed location.../search

// example4

var myURL = '/search?category=mobile&location=texas';

myURL = updateUrl(myURL,'location','california');
console.log('added location...' + myURL);
//added location.../search?category=mobile&location=california

myURL = updateUrl(myURL,'location','new york');
console.log('updated location...' + myURL);
//updated location.../search?category=mobile&location=new%20york

myURL = updateUrl(myURL,'location');
console.log('removed location...' + myURL);
//removed location.../search?category=mobile

// example5

var myURL = 'https://example.com/search?location=texas#fragment';

myURL = updateUrl(myURL,'location','california');
console.log('added location...' + myURL);
//added location.../search?location=california#fragment

myURL = updateUrl(myURL,'location','new york');
console.log('updated location...' + myURL);
//updated location.../search?location=new%20york#fragment

myURL = updateUrl(myURL,'location');
console.log('removed location...' + myURL);
//removed location.../search#fragment

এখানে ফাংশন।

function updateUrl(url,key,value){
      if(value!==undefined){
        value = encodeURI(value);
      }
      var hashIndex = url.indexOf("#")|0;
      if (hashIndex === -1) hashIndex = url.length|0;
      var urls = url.substring(0, hashIndex).split('?');
      var baseUrl = urls[0];
      var parameters = '';
      var outPara = {};
      if(urls.length>1){
          parameters = urls[1];
      }
      if(parameters!==''){
        parameters = parameters.split('&');
        for(k in parameters){
          var keyVal = parameters[k];
          keyVal = keyVal.split('=');
          var ekey = keyVal[0];
          var evalue = '';
          if(keyVal.length>1){
              evalue = keyVal[1];
          }
          outPara[ekey] = evalue;
        }
      }

      if(value!==undefined){
        outPara[key] = value;
      }else{
        delete outPara[key];
      }
      parameters = [];
      for(var k in outPara){
        parameters.push(k + '=' + outPara[k]);
      }

      var finalUrl = baseUrl;

      if(parameters.length>0){
        finalUrl += '?' + parameters.join('&'); 
      }

      return finalUrl + url.substring(hashIndex); 
  }

5

এটি আমার নিজের চেষ্টা ছিল, তবে আমি উত্তরকে অনাকাটাকে আরও পরিষ্কার হিসাবে দেখাবো:

function AddUrlParameter(sourceUrl, parameterName, parameterValue, replaceDuplicates)
{
    if ((sourceUrl == null) || (sourceUrl.length == 0)) sourceUrl = document.location.href;
    var urlParts = sourceUrl.split("?");
    var newQueryString = "";
    if (urlParts.length > 1)
    {
        var parameters = urlParts[1].split("&");
        for (var i=0; (i < parameters.length); i++)
        {
            var parameterParts = parameters[i].split("=");
            if (!(replaceDuplicates && parameterParts[0] == parameterName))
            {
                if (newQueryString == "")
                    newQueryString = "?";
                else
                    newQueryString += "&";
                newQueryString += parameterParts[0] + "=" + parameterParts[1];
            }
        }
    }
    if (newQueryString == "")
        newQueryString = "?";
    else
        newQueryString += "&";
    newQueryString += parameterName + "=" + parameterValue;

    return urlParts[0] + newQueryString;
}

এছাড়াও, আমি স্ট্যাকওভারফ্লোতে থাকা অন্য পোস্ট থেকে এই jQuery প্লাগইনটি পেয়েছি এবং আপনার যদি আরও নমনীয়তার প্রয়োজন হয় তবে আপনি এটি ব্যবহার করতে পারেন: http://plugins.jquery.com/project/query-object

আমি মনে করি কোডটি হবে (পরীক্ষিত হয়নি):

return $.query.parse(sourceUrl).set(parameterName, parameterValue).toString();

আপনার কোডটি ভাগ করে নেওয়ার জন্য ধন্যবাদ। আমি এটি ব্যবহার করে আসছি এবং এটি দুর্দান্ত কাজ করেছে! আমি আমার নিজস্ব সংস্করণটির একটি ছদ্মরূপ আপলোড করেছি, কিছুটা বেশি সংযুক্ত হতে সম্পাদিত এবং জেএসহিন্ট বৈধতা পাস করার জন্য সম্পাদিত। gist.github.com/jonathanconway/02a183920506acd9890a
জোনাথন

3

@ ভিয়েনির উত্তর https://stackoverflow.com/a/44160941/6609678 এ যুক্ত করা হচ্ছে

আমরা নোডে বিল্ট-ইন URL মডিউলটি নিম্নরূপে আমদানি করতে পারি

const { URL } = require('url');

উদাহরণ:

Terminal $ node
> const { URL } = require('url');
undefined
> let url = new URL('', 'http://localhost:1989/v3/orders');
undefined
> url.href
'http://localhost:1989/v3/orders'
> let fetchAll=true, timePeriod = 30, b2b=false;
undefined
> url.href
'http://localhost:1989/v3/orders'
>  url.searchParams.append('fetchAll', fetchAll);
undefined
>  url.searchParams.append('timePeriod', timePeriod);
undefined
>  url.searchParams.append('b2b', b2b);
undefined
> url.href
'http://localhost:1989/v3/orders?fetchAll=true&timePeriod=30&b2b=false'
> url.toString()
'http://localhost:1989/v3/orders?fetchAll=true&timePeriod=30&b2b=false'

উপকারী সংজুক:

https://developer.mozilla.org/en-US/docs/Web/API/URL https://developer.mozilla.org/en/docs/Web/API/URLShopParams


3

এটা চেষ্টা কর.

// uses the URL class
function setParam(key, value) {
            let url = new URL(window.document.location);
            let params = new URLSearchParams(url.search.slice(1));

            if (params.has(key)) {
                params.set(key, value);
            }else {
                params.append(key, value);
            }
        }

url.searchParamsURLobject বস্তুর জন্য প্রাক-প্রাথমিক পরামিতি তালিকা ।
এম্পেটাম্যাচিন

2

আমি মেহমেট ফাতিহ ইল্ডেজের উত্তর পছন্দ করি এমনকি তিনি পুরো প্রশ্নের উত্তর দেননি।

তার উত্তর হিসাবে একই লাইনে, আমি এই কোডটি ব্যবহার করি:

"এটি প্যারামিটারের অস্তিত্ব নিয়ন্ত্রণ করে না, এবং এটি বিদ্যমান মান পরিবর্তন করে না It এটি আপনার প্যারামিটারটি শেষে যুক্ত করে"

  /** add a parameter at the end of the URL. Manage '?'/'&', but not the existing parameters.
   *  does escape the value (but not the key)
   */
  function addParameterToURL(_url,_key,_value){
      var param = _key+'='+escape(_value);

      var sep = '&';
      if (_url.indexOf('?') < 0) {
        sep = '?';
      } else {
        var lastChar=_url.slice(-1);
        if (lastChar == '&') sep='';
        if (lastChar == '?') sep='';
      }
      _url += sep + param;

      return _url;
  }

এবং পরীক্ষক:

  /*
  function addParameterToURL_TESTER_sub(_url,key,value){
    //log(_url);
    log(addParameterToURL(_url,key,value));
  }

  function addParameterToURL_TESTER(){
    log('-------------------');
    var _url ='www.google.com';
    addParameterToURL_TESTER_sub(_url,'key','value');
    addParameterToURL_TESTER_sub(_url,'key','Text Value');
    _url ='www.google.com?';
    addParameterToURL_TESTER_sub(_url,'key','value');
    _url ='www.google.com?A=B';
    addParameterToURL_TESTER_sub(_url,'key','value');
    _url ='www.google.com?A=B&';
    addParameterToURL_TESTER_sub(_url,'key','value');
    _url ='www.google.com?A=1&B=2';
    addParameterToURL_TESTER_sub(_url,'key','value');

  }//*/

2

আমি জেএসএলগুলিতে ইউআরএলগুলি পরিচালনা করতে এই ছোট কিন্তু সম্পূর্ণ গ্রন্থাগারের সাথে যাব :

https://github.com/Mikhus/jsurl


আপনার উত্তরের সাথে সম্পর্কিত বিবরণ অন্তর্ভুক্ত করুন, কেবল একটি লিঙ্ক নয়।
jhpratt GOFUNDME RELICENSING

2

নোড.জেএস এর মতো সার্ভার-সাইডে কিছু বেসিক ইউআরএল পরম সংযোজন বা আপডেটের ক্ষেত্রে এটি আমি ব্যবহার করি use

CoffeScript:

###
    @method addUrlParam Adds parameter to a given url. If the parameter already exists in the url is being replaced.
    @param {string} url
    @param {string} key Parameter's key
    @param {string} value Parameter's value
    @returns {string} new url containing the parameter
###
addUrlParam = (url, key, value) ->
    newParam = key+"="+value
    result = url.replace(new RegExp('(&|\\?)' + key + '=[^\&|#]*'), '$1' + newParam)
    if result is url
        result = if url.indexOf('?') != -1 then url.split('?')[0] + '?' + newParam + '&' + url.split('?')[1]
    else if url.indexOf('#') != -1 then url.split('#')[0] + '?' + newParam + '#' + url.split('#')[1]
    else url + '?' + newParam
    return result

javascript:

function addUrlParam(url, key, value) {
    var newParam = key+"="+value;
    var result = url.replace(new RegExp("(&|\\?)"+key+"=[^\&|#]*"), '$1' + newParam);
    if (result === url) { 
        result = (url.indexOf("?") != -1 ? url.split("?")[0]+"?"+newParam+"&"+url.split("?")[1] 
           : (url.indexOf("#") != -1 ? url.split("#")[0]+"?"+newParam+"#"+ url.split("#")[1] 
              : url+'?'+newParam));
    }
    return result;
}

var url = "http://www.example.com?foo=bar&ciao=3&doom=5#hashme";
result1.innerHTML = addUrlParam(url, "ciao", "1");
<p id="result1"></p>


2

সবচেয়ে সহজ সমাধান, আপনার যদি ইতিমধ্যে কোনও ট্যাগ থাকে বা না থাকে তবে তা কাজ করে এবং এটি স্বয়ংক্রিয়ভাবে সরিয়ে ফেলবে যাতে এটি সমান ট্যাগ যুক্ত রাখে না, মজা করে have

function changeURL(tag)
{
if(window.location.href.indexOf("?") > -1) {
    if(window.location.href.indexOf("&"+tag) > -1){

        var url = window.location.href.replace("&"+tag,"")+"&"+tag;
    }
    else
    {
        var url = window.location.href+"&"+tag;
    }
}else{
    if(window.location.href.indexOf("?"+tag) > -1){

        var url = window.location.href.replace("?"+tag,"")+"?"+tag;
    }
    else
    {
        var url = window.location.href+"?"+tag;
    }
}
  window.location = url;
}

তাহলে

changeURL("i=updated");

2

ভায়নি বাজার্টের উত্তর সঠিক; তবে আপনার কাছে বন্দর, হোস্ট, পথ এবং ক্যোয়ারী সহ সম্পূর্ণ URL থাকলে URL টি কার্যকর হবে:

new URL('http://server/myapp.php?id=10&enabled=true')

এবং আপনি যদি অনুসন্ধানের স্ট্রিংটি কেবল পাস করেন তবেই URLS SearchParams কাজ করবে:

new URLSearchParams('?id=10&enabled=true')

যদি আপনার কোনও অসম্পূর্ণ বা আপেক্ষিক URL থাকে এবং বেস ইউআরএলটির যত্ন না রাখেন, আপনি ?ক্যোরির স্ট্রিংটি পেয়ে আলাদা হয়ে যেতে পারেন এবং পরে এইভাবে যোগদান করতে পারেন:

function setUrlParams(url, key, value) {
  url = url.split('?');
  usp = new URLSearchParams(url[1]);
  usp.set(key, value);
  url[1] = usp.toString();
  return url.join('?');
}

let url = 'myapp.php?id=10';
url = setUrlParams(url, 'enabled', true);  // url = 'myapp.php?id=10&enabled=true'
url = setUrlParams(url, 'id', 11);         // url = 'myapp.php?id=11&enabled=true'

ইন্টারনেট এক্সপ্লোরার এর সাথে সামঞ্জস্যপূর্ণ নয়।


আপনি যদি ব্যবহার করেন তবে var u = new URL(window.location), usp = u.searchParams;আপনাকে কোনও অভিনব স্ট্রিং-বিভক্তকরণ ব্যবহার করতে হবে না।
এমফেটাম্যাচিন

যদিও আপনার সমাধানটি বেশিরভাগ ক্ষেত্রে কাজ করবে, এটি যদি কোনও প্যারামিটার মানতে একটি প্রশ্ন চিহ্ন থাকে তবে এটি URL টি ছড়িয়ে দেবে:setUrlParams('https://example.com?foo=thing???&bar=baz', 'baz', 'qux') => "https://example.com?foo=thing&baz=qux???&bar=baz"
এমফিটাম্যাচাইন ২

1

আপনি যদি লিঙ্কগুলিতে বা অন্য কোথাও ইউআরএলগুলি নিয়ে ঘোরাঘুরি করে থাকেন তবে আপনাকে হ্যাশটিকেও অ্যাকাউন্টে নিতে হবে। সমাধানটি বোঝার জন্য এখানে মোটামুটি সহজ। সম্ভবত সবচেয়ে দ্রুত নয় কারণ এটি একটি রেইজেক্স ব্যবহার করে ... তবে 99.999% ক্ষেত্রে, পার্থক্যটি আসলেই কিছু যায় আসে না!

function addQueryParam( url, key, val ){
    var parts = url.match(/([^?#]+)(\?[^#]*)?(\#.*)?/);
    var url = parts[1];
    var qs = parts[2] || '';
    var hash = parts[3] || '';

    if ( !qs ) {
        return url + '?' + key + '=' + encodeURIComponent( val ) + hash;
    } else {
        var qs_parts = qs.substr(1).split("&");
        var i;
        for (i=0;i<qs_parts.length;i++) {
            var qs_pair = qs_parts[i].split("=");
            if ( qs_pair[0] == key ){
                qs_parts[ i ] = key + '=' + encodeURIComponent( val );
                break;
            }
        }
        if ( i == qs_parts.length ){
            qs_parts.push( key + '=' + encodeURIComponent( val ) );
        }
        return url + '?' + qs_parts.join('&') + hash;
    }
}

কেউ আপনাকে নীচে নামিয়েছে কেন তা নিশ্চিত নন। এটি আরও নির্ভরযোগ্য সমাধানগুলির মধ্যে একটি, যদিও এটি প্রয়োজনের চেয়ে আরও বেশি কোড।
অ্যাডাম লেগেট

1

আমি সবচেয়ে সহজ সমাধানটি ভাবতে পারি এই পদ্ধতিটি, যা পরিবর্তিত ইউআরআই ফিরিয়ে দেবে। আমার মনে হচ্ছে আপনার বেশিরভাগ লোক খুব পরিশ্রম করছেন।

function setParam(uri, key, val) {
    return uri
        .replace(new RegExp("([?&]"+key+"(?=[=&#]|$)[^#&]*|(?=#|$))"), "&"+key+"="+encodeURIComponent(val))
        .replace(/^([^?&]+)&/, "$1?");
}

0

ঠিক আছে এখানে আমি দুটি ফাংশন তুলনা করি, একটি নিজের দ্বারা তৈরি (রেজেক্সট) এবং অন্যটি (অনাকাটা) দ্বারা তৈরি।

বিভক্ত অ্যারে:

function insertParam(key, value)
{
    key = escape(key); value = escape(value);

    var kvp = document.location.search.substr(1).split('&');

    var i=kvp.length; var x; while(i--) 
    {
        x = kvp[i].split('=');

        if (x[0]==key)
        {
                x[1] = value;
                kvp[i] = x.join('=');
                break;
        }
    }

    if(i<0) {kvp[kvp.length] = [key,value].join('=');}

    //this will reload the page, it's likely better to store this until finished
    return "&"+kvp.join('&'); 
}

Regexp পদ্ধতি:

function addParameter(param, value)
{
    var regexp = new RegExp("(\\?|\\&)" + param + "\\=([^\\&]*)(\\&|$)");
    if (regexp.test(document.location.search)) 
        return (document.location.search.toString().replace(regexp, function(a, b, c, d)
        {
                return (b + param + "=" + value + d);
        }));
    else 
        return document.location.search+ param + "=" + value;
}

পরীক্ষার কেস:

time1=(new Date).getTime();
for (var i=0;i<10000;i++)
{
addParameter("test","test");
}
time2=(new Date).getTime();
for (var i=0;i<10000;i++)
{
insertParam("test","test");
}

time3=(new Date).getTime();

console.log((time2-time1)+" "+(time3-time2));

দেখে মনে হচ্ছে এমনকি সহজ সমাধান সহ (যখন রেজিএক্সপ্যাক শুধুমাত্র পরীক্ষা ব্যবহার করে এবং পুনরায় স্থান ফাংশনে প্রবেশ না করে) এটি বিভাজনের চেয়েও ধীর হয় ... আচ্ছা। রেজিপ এক্সপ্রেস ধীরে ধীরে তবে ... আহ ...


যেমনটি আমি উল্লেখ করেছি, এটি আসলে তুলনামূলকভাবে ধীর - এবং fww, ডকুমেন্ট.লোকেশন.সর্চটি আরও পরিষ্কার
অন্নাকাট

0

এখানে আমি কি করি। আমার এডিটপ্যারামস () ফাংশনটি ব্যবহার করে, আপনি কোনও প্যারামিটার যুক্ত করতে, অপসারণ করতে বা পরিবর্তন করতে পারেন, তারপরে ইউআরএল আপডেট করতে বিল্ট ইন রিপ্লেসস্টেট () ফাংশনটি ব্যবহার করতে পারেন:

window.history.replaceState('object or string', 'Title', 'page.html' + editParams('enable', 'true'));


// background functions below:

// add/change/remove URL parameter
// use a value of false to remove parameter
// returns a url-style string
function editParams (key, value) {
  key = encodeURI(key);

  var params = getSearchParameters();

  if (Object.keys(params).length === 0) {
    if (value !== false)
      return '?' + key + '=' + encodeURI(value);
    else
      return '';
  }

  if (value !== false)
    params[key] = encodeURI(value);
  else
    delete params[key];

  if (Object.keys(params).length === 0)
    return '';

  return '?' + $.map(params, function (value, key) {
    return key + '=' + value;
  }).join('&');
}

// 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;
}

0

সর্বোত্তম হিসাবে আমি উপরের উত্তরগুলির মধ্যে যেটিকেই জিজ্ঞাসা স্ট্রিংয়ে প্যারামিটারগুলি থাকে যা নিজেরাই একটি অ্যারে এবং তাই একাধিকবার প্রদর্শিত হবে, ঠিক তেমন উত্তর বলতে পারি না:

http://example.com?sizes[]=a&sizes[]=b

নিম্নলিখিত ফাংশনটি আমি আপডেট করার জন্য যা লিখেছিলাম document.location.search। এটি একটি আর্গুমেন্ট হিসাবে কী / মান জোড় অ্যারের একটি অ্যারে নেয় এবং এটি পরবর্তীটির একটি সংশোধিত সংস্করণ ফিরিয়ে দেয় যা আপনি যা চান তা করতে পারেন। আমি এটি এর মতো ব্যবহার করছি:

var newParams = [
    ['test','123'],
    ['best','456'],
    ['sizes[]','XXL']
];
var newUrl = document.location.pathname + insertParams(newParams);
history.replaceState('', '', newUrl);

যদি বর্তমান ইউআরএলটি ছিল:

http://example.com/index.php?test=replaceme&sizes[]=XL

এই আপনি পেতে হবে

http://example.com/index.php?test=123&sizes[]=XL&sizes[]=XXL&best=456

ক্রিয়া

function insertParams(params) {
    var result;
    var ii = params.length;
    var queryString = document.location.search.substr(1);
    var kvps = queryString ? queryString.split('&') : [];
    var kvp;
    var skipParams = [];
    var i = kvps.length;
    while (i--) {
        kvp = kvps[i].split('=');
        if (kvp[0].slice(-2) != '[]') {
            var ii = params.length;
            while (ii--) {
                if (params[ii][0] == kvp[0]) {
                    kvp[1] = params[ii][1];
                    kvps[i] = kvp.join('=');
                    skipParams.push(ii);
                }
            }
        }
    }
    var ii = params.length;
    while (ii--) {
        if (skipParams.indexOf(ii) === -1) {
            kvps.push(params[ii].join('='));
        }
    }
    result = kvps.length ? '?' + kvps.join('&') : '';
    return result;
}

0


নিয়মিত এক্সপ্রেশন চেষ্টা করুন , এত ধীরে, এইভাবে:

var SetParamUrl = function(_k, _v) {// replace and add new parameters

    let arrParams = window.location.search !== '' ? decodeURIComponent(window.location.search.substr(1)).split('&').map(_v => _v.split('=')) : Array();
    let index = arrParams.findIndex((_v) => _v[0] === _k); 
    index = index !== -1 ? index : arrParams.length;
    _v === null ? arrParams = arrParams.filter((_v, _i) => _i != index) : arrParams[index] = [_k, _v];
    let _search = encodeURIComponent(arrParams.map(_v => _v.join('=')).join('&'));

    let newurl = window.location.protocol + "//" + window.location.host + window.location.pathname + (arrParams.length > 0 ? '?' +  _search : ''); 

    // window.location = newurl; //reload 

    if (history.pushState) { // without reload  
        window.history.pushState({path:newurl}, null, newurl);
    }

};

var GetParamUrl = function(_k) {// get parameter by key

    let sPageURL = decodeURIComponent(window.location.search.substr(1)),
        sURLVariables = sPageURL.split('&').map(_v => _v.split('='));
    let _result = sURLVariables.find(_v => _v[0] === _k);
    return _result[1];

};

উদাহরণ:

        // https://some.com/some_path
        GetParamUrl('cat');//undefined
        SetParamUrl('cat', "strData");// https://some.com/some_path?cat=strData
        GetParamUrl('cat');//strData
        SetParamUrl('sotr', "strDataSort");// https://some.com/some_path?cat=strData&sotr=strDataSort
        GetParamUrl('sotr');//strDataSort
        SetParamUrl('cat', "strDataTwo");// https://some.com/some_path?cat=strDataTwo&sotr=strDataSort
        GetParamUrl('cat');//strDataTwo
        //remove param
        SetParamUrl('cat', null);// https://some.com/some_path?sotr=strDataSort

0

জেএসে নতুন সাফল্যের সাথে এখানে কীভাবে কেউ ইউআরএলে ক্যোয়ারী পরম যুক্ত করতে পারে:

var protocol = window.location.protocol,
    host = '//' + window.location.host,
    path = window.location.pathname,
    query = window.location.search;

var newUrl = protocol + host + path + query + (query ? '&' : '?') + 'param=1';

window.history.pushState({path:newUrl}, '' , newUrl);

এছাড়াও এই সম্ভাবনাটি দেখুন মজিলা ইউআরএল URL অনুসন্ধানপরিম.এপেন্ড ()


0

এটি সমস্ত আধুনিক ব্রাউজারে কাজ করবে।

function insertParam(key,value) {
      if (history.pushState) {
          var newurl = window.location.protocol + "//" + window.location.host + window.location.pathname + '?' +key+'='+value;
          window.history.pushState({path:newurl},'',newurl);
      }
    }

0

সমস্ত ক্যোয়ারী স্ট্রিং পুনরায় সেট করুন

var params = { params1:"val1", params2:"val2" };
let str = jQuery.param(params);

let uri = window.location.href.toString();
if (uri.indexOf("?") > 0)
   uri = uri.substring(0, uri.indexOf("?"));

console.log(uri+"?"+str);
//window.location.href = uri+"?"+str;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.