Apakah ada pustaka JavaScript yang membuat kamus dari string kueri, ASP.NET
gaya?
Sesuatu yang bisa digunakan seperti:
var query = window.location.querystring["query"]?
Apakah "string kueri" disebut sebagai sesuatu yang lain di luar .NET
dunia? Mengapa tidak location.search
dipecah menjadi koleksi kunci / nilai ?
EDIT : Saya telah menulis fungsi saya sendiri, tetapi apakah ada pustaka JavaScript utama yang melakukan ini?
javascript
query-string
inti
sumber
sumber
Jawaban:
Mungkin http://plugins.jquery.com/query-object/ ?
Ini adalah percabangannya https://github.com/sousk/jquery.parsequery#readme .
sumber
Anda dapat mengekstrak pasangan kunci / nilai dari properti location.search , properti ini memiliki bagian dari URL yang mengikuti? simbol, termasuk? simbol.
sumber
dork.com/?equation=10=2
...?val=foo&val=bar&val=baz
bagaimana Anda akan mengakomodasi ini?val=foo&val=bar&val=baz
; itu harusval[]=foo&val[]=bar&val[]=baz
%20
's, jadi saya menggantinyaresult[keyValuePair[0]] = keyValuePair[1] || '';
denganresult[keyValuePair[0]] = decodeURIComponent((keyValuePair[1]+'').replace(/\+/g, '%20')) || '';
tl; dr solusi pada satu baris (ish) kode menggunakan vanilla javascript
Untuk querystring,
?a=1&b=2&c=3&d&e
ia mengembalikan:kunci multi-nilai dan karakter yang disandikan ?
Lihat jawaban asli di Bagaimana saya bisa mendapatkan nilai string kueri di JavaScript?
sumber
Setelah menemukan posting ini, ketika melihat diri saya sendiri, saya pikir saya harus menambahkan bahwa menurut saya solusi yang paling banyak dipilih adalah yang terbaik. Itu tidak menangani nilai array (seperti? A = foo & a = bar - dalam hal ini saya berharap mendapatkan untuk mengembalikan ['foo', 'bar']). Ini juga sejauh yang saya tahu tidak memperhitungkan nilai yang dikodekan - seperti pengkodean karakter hex di mana% 20 mewakili spasi (contoh:? A = Hello% 20World) atau simbol plus yang digunakan untuk mewakili spasi (contoh :? a = Halo + Dunia).
Node.js menawarkan apa yang tampak seperti solusi yang sangat lengkap untuk penguraian querystring. Ini akan mudah untuk diambil dan digunakan dalam proyek Anda sendiri karena cukup terisolasi dengan baik dan di bawah lisensi yang permisif.
Kode untuk itu dapat dilihat di sini: https://github.com/joyent/node/blob/master/lib/querystring.js
Tes yang dimiliki Node dapat dilihat di sini: https://github.com/joyent/node/blob/master/test/simple/test-querystring.js Saya sarankan mencoba beberapa di antaranya dengan jawaban populer untuk melihat bagaimana itu menangani mereka.
Ada juga proyek yang saya libatkan untuk secara khusus menambahkan fungsi ini. Ini adalah port dari modul parsing string kueri lib standar Python. Garpu saya dapat ditemukan di sini: https://github.com/d0ugal/jquery.qeeree
sumber
Atau Anda bisa menggunakan pustaka sugar.js .
Dari sugarjs.com:
Contoh:
sumber
Jika Anda memiliki querystring, gunakan ini:
sumber
sumber
decodeURIComponent
Setidaknya Anda kehilangan string yang diekstrak.decodeURIComponent
stand.Perlu dicatat, pustaka yang disebutkan John Slegers memang memiliki ketergantungan jQuery, namun di sini ada versi yang merupakan vanilla Javascript.
https://github.com/EldonMcGuinness/querystring.js
Saya hanya akan mengomentari postingannya, tetapi saya kurang memiliki reputasi untuk melakukannya. : /
Contoh:
Contoh di bawah ini memproses string kueri berikut, meskipun tidak teratur:
sumber
Kode
Ini Intinya oleh Eldon McGuinness ini sejauh ini merupakan implementasi paling lengkap dari parser string kueri JavaScript yang pernah saya lihat sejauh ini.
Sayangnya, ini ditulis sebagai plugin jQuery.
Saya menulis ulang ke vanilla JS dan membuat beberapa perbaikan:
Bagaimana cara menggunakannya
Keluaran
Lihat juga Biola ini .
sumber
sumber
Saya suka membuatnya tetap sederhana, mudah dibaca, dan kecil.
Contoh:
sumber
Fungsi Saya menulis untuk persyaratan yang mirip dengan ini dengan manipulasi string javascript murni
Pemakaian:
sumber
?
yang pada dasarnya sama dengan dua jawaban di atas Anda?Jika Anda menggunakan lodash + ES6, berikut adalah solusi satu baris:
_.object(window.location.search.replace(/(^\?)/, '').split('&').map(keyVal => keyVal.split('=')));
sumber
Oke, karena semua orang mengabaikan pertanyaan saya yang sebenarnya, heh, saya juga akan memposting pertanyaan saya! Inilah yang saya miliki:
Dan tesnya:
Pikiran Anda berpikir, JavaScript bukanlah bahasa ibu saya.
Bagaimanapun, saya sedang mencari pustaka JavaScript (mis. JQuery, Prototype) yang sudah memiliki satu tulisan. :)
sumber
Membangun jawaban oleh @CMS Saya memiliki yang berikut (dalam CoffeeScript yang dapat dengan mudah diubah ke JavaScript):
Anda dapat dengan mudah mengambil apa yang Anda butuhkan dengan:
Kemenangan di sini adalah antarmuka berorientasi objek (bukan fungsional) dan dapat dilakukan pada string apa pun (bukan hanya pencarian lokasi).
Jika Anda sudah menggunakan pustaka JavaScript, fungsi ini sudah ada. Misalnya di sini adalah versi Prototipe
sumber