Mendapatkan url parameter jquery Atau Bagaimana untuk Mendapatkan Nilai String Query Di js

Saya telah melihat banyak dari jQuery contoh di mana parameter ukuran dan nama yang tidak diketahui. Url saya hanya akan pernah memiliki 1 string:

http://example.com?sent=yes

Aku hanya ingin mendeteksi:

  1. Apakah dikirim ada?
  2. Itu sama dengan "ya"?
Mengomentari pertanyaan (5)
Larutan

Solusi terbaik di sini.

var getUrlParameter = function getUrlParameter(sParam) {
    var sPageURL = window.location.search.substring(1),
        sURLVariables = sPageURL.split('&'),
        sParameterName,
        i;

    for (i = 0; i < sURLVariables.length; i++) {
        sParameterName = sURLVariables[i].split('=');

        if (sParameterName[0] === sParam) {
            return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);
        }
    }
};

Dan ini adalah bagaimana anda dapat menggunakan fungsi ini dengan asumsi URL, http://dummy.com/?technology=jquery&blog=jquerybyexample.

var tech = getUrlParameter('technology');
var blog = getUrlParameter('blog');
Komentar (33)

Solusi dari 2019

Kami memiliki: http://example.com?sent=yes

let searchParams = new URLSearchParams(window.location.search)

Tidak mengirim ada?

searchParams.has('sent') // true

Itu sama untuk "ya"?

let param = searchParams.get('sent')

dan kemudian membandingkannya.

Komentar (11)

jQuery code snippet untuk mendapatkan variabel dinamis yang disimpan dalam url sebagai parameter dan menyimpannya sebagai variabel JavaScript siap untuk digunakan dengan script anda:

$.urlParam = function(name){
    var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
    if (results==null) {
       return null;
    }
    return decodeURI(results[1]) || 0;
}

contoh.com?param1=nama&param2=&id=6

$.urlParam('param1'); // name
$.urlParam('id');        // 6
$.urlParam('param2');   // null

contoh params dengan spasi

http://www.jquery4u.com?city=Gold Coast
console.log($.urlParam('city'));  
//output: Gold%20Coast

console.log(decodeURIComponent($.urlParam('city'))); 
//output: Gold Coast
Komentar (11)

Aku selalu tongkat ini sebagai satu baris. Sekarang params memiliki vars:

params={};location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi,function(s,k,v){params[k]=v})

multi-berlapis:

var params={};
window.location.search
  .replace(/[?&]+([^=&]+)=([^&]*)/gi, function(str,key,value) {
    params[key] = value;
  }
);

sebagai fungsi

function getSearchParams(k){
 var p={};
 location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi,function(s,k,v){p[k]=v})
 return k?p[k]:p;
}

yang dapat anda gunakan sebagai:

getSearchParams()  //returns {key1:val1, key2:val2}

atau

getSearchParams("key1")  //returns val1
Komentar (8)

Mungkin terlambat. Tapi metode ini sangat mudah dan sederhana

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.url.js"></script>



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

UPDATE
Membutuhkan plugin url : plugins.jquery.com/url
Terima Kasih -Ripounet

Komentar (1)

Alternatif lain fungsi...

function param(name) {
    return (location.search.split(name + '=')[1] || '').split('&')[0];
}
Komentar (5)

Atau anda dapat menggunakan ini rapi sedikit fungsi, karena why overcomplicated solusi?

function getQueryParam(param, defaultValue = undefined) {
    location.search.substr(1)
        .split("&")
        .some(function(item) { // returns first occurence and stops
            return item.split("=")[0] == param && (defaultValue = item.split("=")[1], true)
        })
    return defaultValue
}

yang terlihat bahkan lebih baik bila disederhanakan dan onelined:

tl;dr satu-line solusi

var queryDict = {};
location.search.substr(1).split("&").forEach(function(item) {queryDict[item.split("=")[0]] = item.split("=")[1]})
hasilnya:
queryDict['dikirim'] // undefined atau 'nilai'

Tapi bagaimana jika anda punya encoded characters atau multivalued keys?

Anda lebih baik melihat jawaban ini: Bagaimana saya bisa mendapatkan nilai string query di JavaScript?

Sneak peak

"?a=1&b=2&c=3&d&e&a=5&a=t%20e%20x%20t&e=http%3A%2F%2Fw3schools.com%2Fmy%20test.asp%3Fname%3Dståle%26car%3Dsaab"
> queryDict
a: ["1", "5", "t e x t"]
b: ["2"]
c: ["3"]
d: [undefined]
e: [undefined, "http://w3schools.com/my test.asp?name=ståle&car=saab"]

> queryDict["a"][1] // "5"
> queryDict.a[1] // "5"
Komentar (6)

Menggunakan URLSearchParams:

var params = new window.URLSearchParams(window.location.search);
console.log(params.get('name'));

Berhati-hati tentang kompatibilitas (Sebagian besar itu's baik-baik saja, tapi IE dan Edge, mungkin menjadi cerita yang berbeda, periksa ini kompatibel untuk referensi: https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams)

Komentar (2)

Mungkin anda mungkin ingin untuk memberikan dokter Gigi JS lihat? (disclaimer: saya menulis kode)

kode:

document.URL == "http://helloworld.com/quotes?id=1337&author=kelvin&message=hello"
var currentURL = document.URL;
var params = currentURL.extract();
console.log(params.id); // 1337
console.log(params.author) // "kelvin"
console.log(params.message) // "hello"

dengan Gigi JS, anda pada dasarnya dapat panggilan ekstrak() fungsi pada semua string (misalnya, dokumen.URL.ekstrak() ) dan anda mendapatkan kembali HashMap dari semua parameter yang ditemukan. It's juga disesuaikan untuk berurusan dengan pembatas dan semua.

Versi Minified < 1kb

Komentar (0)

Yang satu ini adalah sederhana dan bekerja untuk saya

$.urlParam = function(name){
    var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
    return results[1] || 0;
}

jadi jika url anda http://www.yoursite.com?city=4

coba ini

console.log($.urlParam('city'));
Komentar (0)

Saya berharap ini akan membantu.

 <script type="text/javascript">
   function getParameters() {
     var searchString = window.location.search.substring(1),
       params = searchString.split("&"),
       hash = {};

     if (searchString == "") return {};
     for (var i = 0; i < params.length; i++) {
       var val = params[i].split("=");
       hash[unescape(val[0])] = unescape(val[1]);
     }

     return hash;
   }

    $(window).load(function() {
      var param = getParameters();
      if (typeof param.sent !== "undefined") {
        // Do something.
      }
    });
</script>
Komentar (0)
function GetRequestParam(param)
{
    var res = null;
    try{
        var qs = decodeURIComponent(window.location.search.substring(1));//get everything after then '?' in URI
        var ar = qs.split('&');
        $.each(ar, function(a, b){
            var kv = b.split('=');
            if(param === kv[0]){
                res = kv[1];
                return false;//break loop
            }
        });
    }catch(e){}
    return res;
}
Komentar (0)

Coba ini demo http://jsfiddle.net/xy7cX/

API:

Hal ini akan membantu :)

kode

var url = "http://myurl.com?sent=yes"

var pieces = url.split("?");
alert(pieces[1] + " ===== " + $.inArray("sent=yes", pieces));
Komentar (1)

Begitu sederhana anda dapat menggunakan url dan mendapatkan nilai

function getParameterByName(name, url) {
    if (!url) url = window.location.href;
    name = name.replace(/[\[\]]/g, "\\$&");
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
    results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, " "));
}

Contoh Penggunaan

// query string: ?first=value1&second=&value2
var foo = getParameterByName('first'); // "value1"
var bar = getParameterByName('second'); // "value2" 

Catatan: Jika sebuah parameter hadir beberapa kali (?pertama=value1&detik=value2), anda akan mendapatkan nilai pertama (value1) dan nilai kedua sebagai (value2).

Komentar (0)

Ini mungkin berlebihan, tapi ada yang cukup populer di perpustakaan sekarang tersedia untuk di-parsing Uri, yang disebut URI.js.

Contoh

var uri = "http://example.org/foo.html?technology=jquery&technology=css&blog=stackoverflow";
var components = URI.parse(uri);
var query = URI.parseQuery(components['query']);
document.getElementById("result").innerHTML = "URI = " + uri;
document.getElementById("result").innerHTML += "<br>technology = " + query['technology'];

// If you look in your console, you will see that this library generates a JS array for multi-valued queries!
console.log(query['technology']);
console.log(query['blog']);
<script src="https://cdnjs.cloudflare.com/ajax/libs/URI.js/1.17.0/URI.min.js"></script>

<span id="result"></span>
Komentar (0)

Ada's ini perpustakaan besar: https://github.com/allmarkedup/purl

yang memungkinkan anda untuk tidak hanya

url = 'http://example.com?sent=yes';
sent = $.url(url).param('sent');
if (typeof sent != 'undefined') { // sent exists
   if (sent == 'yes') { // sent is equal to yes
     // ...
   }
}

Contoh adalah asumsi anda're menggunakan jQuery. Anda juga bisa menggunakannya hanya sebagai javascript biasa, sintaks akan menjadi sedikit berbeda.

Komentar (1)
http://example.com?sent=yes

Solusi terbaik di sini.

function getUrlParameter(name) {
    name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
    var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
    var results = regex.exec(location.href);
    return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, '    '));
};

Dengan fungsi di atas, anda bisa mendapatkan individu nilai parameter:

getUrlParameter('sent');
Komentar (1)

Ini akan memberi anda menyenangkan untuk bekerja dengan objek

    function queryParameters () {
        var result = {};

        var params = window.location.search.split(/\?|\&/);

        params.forEach( function(it) {
            if (it) {
                var param = it.split("=");
                result[param[0]] = param[1];
            }
        });

        return result;
    }

Dan kemudian;

    if (queryParameters().sent === 'yes') { .....
Komentar (1)

Hal ini didasarkan pada Gazoris's jawaban, tapi URL decode parameter sehingga mereka dapat digunakan ketika mereka berisi data selain angka dan huruf:

function urlParam(name){
    var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
    // Need to decode the URL parameters, including putting in a fix for the plus sign
    // https://stackoverflow.com/a/24417399
    return results ? decodeURIComponent(results[1].replace(/\+/g, '%20')) : null;
}
Komentar (0)

Ada contoh lain dengan menggunakan URI.js perpustakaan.

Contoh jawaban pertanyaan-pertanyaan yang persis seperti yang diminta.

var url = 'http://example.com?sent=yes';
var urlParams = new URI(url).search(true);
// 1. Does sent exist?
var sendExists = urlParams.sent !== undefined;
// 2. Is it equal to "yes"?
var sendIsEqualtToYes = urlParams.sent == 'yes';

// output results in readable form
// not required for production
if (sendExists) {
  console.log('Url has "sent" param, its value is "' + urlParams.sent + '"');
  if (urlParams.sent == 'yes') {
    console.log('"Sent" param is equal to "yes"');
  } else {
    console.log('"Sent" param is not equal to "yes"');
  }
} else {
  console.log('Url hasn\'t "sent" param');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/URI.js/1.18.2/URI.min.js"></script>
Komentar (0)