menambahkan url anda dan refresh halaman

Saya mencari untuk menulis bagian dari javascript yang akan menambahkan parameter ke url saat ini dan kemudian refresh halaman - bagaimana saya bisa melakukan ini?

Mengomentari pertanyaan (1)
Larutan

ini harus bekerja (tidak diuji!)

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

Lebih pendek dari jawaban yang diterima, melakukan hal yang sama, tapi tetap sederhana:

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

Kami don't harus mengubah seluruh url, hanya query string, yang dikenal sebagai pencarian atribut lokasi.

Ketika anda menentukan nilai untuk pencarian atribut, tanda tanya ini secara otomatis dimasukkan oleh browser dan halaman reloaded.

Komentar (10)

Sebagian besar dari jawaban-jawaban berikut ini menyarankan bahwa seseorang harus menambahkan parameter(s) untuk URL, seperti cuplikan berikut ini atau yang mirip dengan variasi:

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

Ini akan bekerja cukup baik untuk sebagian besar kasus.

Namun

Yang's tidak cara yang benar untuk menambahkan parameter ke URL dalam pendapat saya.

Karena disarankan pendekatan tidak menguji apakah parameter ini sudah diatur dalam URL, jika tidak berhati-hati mungkin berakhir dengan sangat panjang URL dengan parameter yang sama diulang beberapa kali. yaitu:

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

pada titik ini adalah di mana masalah dimulai. Disarankan pendekatan bisa dan akan membuat URL yang panjang setelah beberapa refresh halaman, sehingga membuat URL yang tidak valid. Ikuti link ini untuk informasi lebih lanjut tentang URL yang panjang https://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url-in-different-browsers

Hal ini saya menyarankan pendekatan:

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

Dengan fungsi ini hanya akan harus melakukan hal berikut:

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

Lebih compat versi

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

Silahkan periksa kode di bawah ini :

/*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;
Komentar (1)

Salah satu bug fix kecil untuk @yeyo's bijaksana jawaban di atas.

Perubahan:

var parameter = parser.pencarian.split(/\?|&/);

Untuk:

var parameter = parser.pencarian.split(/\?|&amp;/);

Komentar (1)

Coba ini

var url = ApiUrl(`/customers`);
  if(data){
   url += '?search='+data; 
  }
  else
  { 
      url +=  `?page=${page}&per_page=${perpage}`;
  }
  console.log(url);
Komentar (0)