Adakah yang tahu cara yang baik untuk menulis ekstensi jQuery untuk menangani parameter string kueri? Saya pada dasarnya ingin memperluas ($)
fungsi sihir jQuery sehingga saya dapat melakukan sesuatu seperti ini:
$('?search').val();
Yang akan memberi saya nilai "test" di URL berikut: http://www.example.com/index.php?search=test
.
Saya telah melihat banyak fungsi yang dapat melakukan ini dalam jQuery dan Javascript, tetapi saya sebenarnya ingin memperluas jQuery agar berfungsi persis seperti yang ditunjukkan di atas. Saya tidak mencari plugin jQuery, saya mencari ekstensi ke metode jQuery.
javascript
jquery
url
jquery-plugins
query-string
TroySteven
sumber
sumber
$
cukup kelebihan beban?Jawaban:
Setelah bertahun-tahun penguraian string yang jelek, ada cara yang lebih baik: URLSearchParams Mari kita lihat bagaimana kita dapat menggunakan API baru ini untuk mendapatkan nilai dari lokasi!
PEMBARUAN: IE tidak didukung
gunakan fungsi ini dari jawaban di bawah alih-alih URLSearchParams
sumber
Mengapa memperpanjang jQuery? Apa manfaat memperluas jQuery vs hanya memiliki fungsi global?
http://jsfiddle.net/gilly3/sgxcL/
Pendekatan alternatif adalah mem-parsing seluruh string kueri dan menyimpan nilai dalam suatu objek untuk digunakan nanti. Pendekatan ini tidak memerlukan ekspresi reguler dan memperluas
window.location
objek (tetapi, bisa dengan mudah menggunakan variabel global):http://jsfiddle.net/gilly3/YnCeu/
Versi ini juga menggunakan
Array.forEach()
, yang tidak tersedia secara native di IE7 dan IE8. Itu dapat ditambahkan dengan menggunakan implementasi di MDN , atau Anda dapat menggunakan jQuery's$.each()
saja.sumber
name=value
pasangan, dipisahkan oleh&
. Jika kode Anda menggunakan format querystring khusus, tentu saja, Anda harus menulis parser querystring khusus di mana pun querystring digunakan, baik di server atau klien.GET
dikodekan sebagaiapplication/x-www-form-urlencoded
, dengan nilai dipisahkan oleh&
. Kode saya menangani standar itu. Struktur url khusus seperti yang Anda tautkan membutuhkan sisi server parser dan sisi klien. Apapun, menambahkan kemampuan seperti itu ke kode saya di atas akan sepele.Plugin JQuery jQuery-URL-Parser melakukan pekerjaan yang sama, misalnya untuk mengambil nilai param string kueri penelusuran , Anda dapat menggunakanPerpustakaan ini tidak dikelola secara aktif. Seperti yang disarankan oleh penulis plugin yang sama, Anda dapat menggunakan URI.js .
Atau Anda dapat menggunakan js-url sebagai gantinya. Ini sangat mirip dengan yang di bawah ini.
Jadi, Anda dapat mengakses parameter kueri seperti
$.url('?search')
sumber
file://
protokol akan menyebabkan lebih banyak hal tidak berfungsi. Anda dapat membuat server HTML statis yang sangat cepat dan mudah dengan node.js. stackoverflow.com/questions/16333790/…Temukan permata ini dari teman-teman kami di SitePoint. https://www.sitepoint.com/url-parameters-jquery/ .
Menggunakan PURE jQuery. Saya hanya menggunakan ini dan itu berhasil. Tweak sedikit demi contoh.
Gunakan sesuka Anda.
sumber
results[1] || 0
, Anda harus melakukannya jika (hasil) {hasil kembali [1]} mengembalikan 0; parameter permintaan bcoz mungkin tidak ada sama sekali. Dan memodifikasi akan menangani semua kasus generik.https://example.com/?c=Order+ID
? Tanda plus itu masih ada di fungsi ini.Ini bukan contoh kode saya, tapi saya pernah menggunakannya di masa lalu.
sumber
Saya menulis sedikit fungsi di mana Anda hanya perlu mengurai nama parameter kueri. Jadi, jika Anda memiliki:? Project = 12 & Mode = 200 & date = 2013-05-27 dan Anda ingin parameter 'Mode' Anda hanya perlu menguraikan nama 'Mode' ke dalam fungsi:
sumber
Membangun jawaban @Rob Neild di atas, berikut ini adalah adaptasi JS murni yang mengembalikan objek sederhana dari string string kueri yang diterjemahkan (no% 20's, dll).
sumber
""
. Dan Anda mendapatkan {"": "undefined"}Ditulis dalam Vanilla Javascript
sumber
Saya menggunakan ini.
sumber