ইউআরএল এবং রিফ্রেশ পৃষ্ঠাতে যুক্ত করুন


134

আমি জাভাস্ক্রিপ্টের একটি টুকরো লিখতে চাইছি যা বর্তমান ইউআরএলে একটি প্যারামিটার যুক্ত করবে এবং পৃষ্ঠাটি রিফ্রেশ করবে - আমি কীভাবে এটি করতে পারি?


সর্বাধিক অনুকূলিত সমাধানটি আমি পেয়েছি: stackoverflow.com/a/38792165/1783439
nu everrest

উত্তর:


162

এটি কাজ করা উচিত (পরীক্ষিত নয়!)

var url = window.location.href;    
if (url.indexOf('?') > -1){
   url += '&param=1'
}else{
   url += '?param=1'
}
window.location.href = url;

1
str.search (regex) srt.indexOf (str2) এর চেয়ে দ্রুত
xavierm02

1
এবং আপনার একটি ভেরিয়েবলের নাম এবং এনকোডিউআরআইসি কম্পোনেন্ট () সহ একটি ভেরিয়েবল প্যারামিটার সহ একটি ull উদাহরণ দেওয়া উচিত।
xavierm02

এবং> -1 এর অন্তর্নিহিত, আপনার ব্যবহার করা উচিত! == -1
xavierm02

8
একটি এটি অনুসরণ করে, কীভাবে কিছু যুক্তি যুক্ত করতে পারে যে প্যারামিটারটি যদি কোনও ইউআরএলটিতে ইতিমধ্যে উপস্থিত থাকে তবে আমি একটি নতুন পরামিতি যুক্ত করার পরিবর্তে এর মান আপডেট করব?
অপেশাদার

1
এই যদি এটা অস্তিত্ব, URL বন্ধ নোঙ্গর (হ্যাশ মান) লাগবে, @amateur আপনি একটি ফাংশন আছে যে এখানে যে পেতে পারবেন: stackoverflow.com/questions/486896/...
ডগ Molineux

143

স্বীকৃত উত্তরের চেয়ে কম, একই কাজ করে তবে তা সহজ রাখছেন:

window.location.search += '&param=42';

আমাদের পুরো url পরিবর্তন করতে হবে না, কেবলমাত্র ক্যোরি স্ট্রিং, যা অবস্থানের অনুসন্ধান বৈশিষ্ট্য হিসাবে পরিচিত।

আপনি যখন অনুসন্ধানের বৈশিষ্ট্যে কোনও মান নির্ধারণ করছেন, তখন প্রশ্ন চিহ্নটি স্বয়ংক্রিয়ভাবে ব্রাউজারটি দ্বারা প্রবেশ করা হয় এবং পৃষ্ঠাটি পুনরায় লোড করা হয় is


11
এমন এক ক্ষেত্রে যেখানে আপনি জানেন যে এটিই কেবলমাত্র পরামিতি হবে, আপনি এটি যুক্ত করার পরিবর্তে অনুসন্ধানও সেট করতে পারেন:window.location.search = '?param=42';
ডেভ ডুপ্লান্টিস

1
দারূন কাজ!! সঠিক, সহজতম এবং অনুকূলিতকরণের উপায়; উত্তর গ্রহণ করা উচিত ছিল।
রোহিত

যদি আপনার ইউআরএলটি হয়: www.mysite.com ... তবে এটি কী url তৈরি করবে না: www.mysite.com & পরম = 42 যার "" দরকার? অক্ষরটি ইউআরএল মধ্যে এটির একমাত্র পরামিতি। আমি @ শ্লোমি কোমি উত্তরটি পছন্দ করি কারণ এটি 2 টি প্রধান দৃশ্যের অন্তর্ভুক্ত।
বৃহত্তর কিং

1
@ গ্রেটারকিং ব্রাউজারটি অবস্থানের অনুসন্ধানের বৈশিষ্ট্যে পরামিতি যুক্ত করার সময় প্রশ্ন চিহ্ন যুক্ত করে। আপনার ব্রাউজার কনসোলে এটি ব্যবহার করে দেখুন।
বো ফ্রেডেরিকসেন

1
আমার খারাপ @ BoFrederiksen আপনি সত্যিই সঠিক ... এই সম্পর্কে শ্রোতা। "+ =" মোটা ... এটি বাদ পড়েছে। আমার কাছ থেকে +1
বৃহত্তরকিং

70

এখানে বেশিরভাগ উত্তরের পরামর্শ অনুসারে একটিতে ইউআরএলটিতে প্যারামিটার যুক্ত করা উচিত যা নিম্নলিখিত স্নিপেটের মতো বা অনুরূপ পরিবর্তনের মতো:

location.href = location.href + "&parameter=" + value;

এটি বেশিরভাগ ক্ষেত্রে ক্ষেত্রে বেশ কার্যকর হবে।

যাহোক

এটি আমার মতে কোনও URL এ কোনও পরামিতি যুক্ত করার সঠিক উপায় নয়।

কারণ প্রস্তাবিত পদ্ধতির প্যারামিটারটি ইতিমধ্যে ইউআরএলটিতে সেট করা আছে কিনা তা পরীক্ষা করে না, সাবধান না হলে একই পরামিতিটি একাধিকবার পুনরাবৃত্তি করে খুব দীর্ঘ URL সহ শেষ হতে পারে। অর্থাৎ,

https://stackoverflow.com/?&param=1&param=1&param=1&param=1&param=1&param=1&param=1&param=1&param=1

সমস্যা শুরু যেখানে এই মুহুর্তে। প্রস্তাবিত পদ্ধতিটি একাধিক পৃষ্ঠা রিফ্রেশ হওয়ার পরে খুব দীর্ঘ URL তৈরি করতে পারে এবং ইউআরএলকে অবৈধ করে তোলে। দীর্ঘ URL সম্পর্কে আরও তথ্যের জন্য এই লিঙ্কটি অনুসরণ করুন বিভিন্ন ব্রাউজারে কোনও URL এর সর্বোচ্চ দৈর্ঘ্য কত?

এটি আমার প্রস্তাবিত পদ্ধতি:

function URL_add_parameter(url, param, value){
    var hash       = {};
    var parser     = document.createElement('a');

    parser.href    = url;

    var parameters = parser.search.split(/\?|&/);

    for(var i=0; i < parameters.length; i++) {
        if(!parameters[i])
            continue;

        var ary      = parameters[i].split('=');
        hash[ary[0]] = ary[1];
    }

    hash[param] = value;

    var list = [];  
    Object.keys(hash).forEach(function (key) {
        list.push(key + '=' + hash[key]);
    });

    parser.search = '?' + list.join('&');
    return parser.href;
}

এই ফাংশনটির সাথে একটিকে নিম্নলিখিতটি করতে হবে:

location.href = URL_add_parameter(location.href, 'param', 'value');

1
কেন কেবল ব্যবহারের জন্য নয়:if(window.location.search.indexOf('&param=') == -1) {window.location.search += '&param=1';}
538 রোম

@ সাবাস্তিয়ানগার্সিয়া-রোমিও হ্যাঁ এটি একটি আকর্ষণীয় পদ্ধতির এবং সত্যই কার্যকর, তবে এই অনুষ্ঠানটি কেন এইভাবে প্রোগ্রাম করা হয়েছে তার দুটি কারণ রয়েছে। 1. বিদ্যমান সদৃশ পরামিতি অপসারণ। 2. বিদ্যমান প্যারামিটারের মানটি ওভাররাইট করতে। এই দৃষ্টিকোণ থেকে, এখন ব্যবহারের indexOfফলে কোডে অপ্রয়োজনীয় জটিলতার পরিচয় দেওয়া হতে পারে।
ইয়েয়ো


2
function gotoItem( item ){
    var url = window.location.href;
    var separator = (url.indexOf('?') > -1) ? "&" : "?";
    var qs = "item=" + encodeURIComponent(item);
    window.location.href = url + separator + qs;
}

আরও কম্পাট সংস্করণ

function gotoItem( item ){
    var url = window.location.href;    
    url += (url.indexOf('?') > -1)?"&":"?" + "item=" + encodeURIComponent(item);
    window.location.href = url;
}

1

নীচের কোডটি পরীক্ষা করুন:

/*Get current URL*/    
var _url = location.href; 
/*Check if the url already contains ?, if yes append the parameter, else add the parameter*/
_url = ( _url.indexOf('?') !== -1 ) ? _url+'&param='+value : _url+'?param='+value;
/*reload the page */
window.location.href = _url;

1

উপরে @ ইয়োয়ের চিন্তামূলক উত্তরের জন্য একটি ছোট বাগ ফিক্স।

পরিবর্তন:

var parameters = parser.search.split(/\?|&/);

প্রতি:

var parameters = parser.search.split(/\?|&amp;/);


দয়া করে কোনও মন্তব্যে এই জাতীয় সংশোধন পোস্ট করুন বা প্রস্তাব করুন এবং সম্পাদনা করুন। তারা একটি পৃথক উত্তর ওয়ারেন্ট দেয় না।
স্বচ্ছতার জন্য জেজে এবং মনিকা 19 '


0

এছাড়াও:

window.location.href += (window.location.href.indexOf('?') > -1 ? '&' : '?') + 'param=1'

শ্লোমির মাত্র একটি লাইন বুকমার্কগুলিতে ব্যবহারের যোগ্য উত্তর দেয়

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