Menggunakan Javascript, saya ingin membuat link ke halaman. Parameter halaman ada dalam array Javascript yang saya buat berseri di JSON.
Jadi saya ingin membuat URL seperti itu:
http://example.com/?data="MY_JSON_ARRAY_HERE"
Bagaimana saya harus keluar dari string JSON saya (array berseri) untuk memasukkannya sebagai parameter di URL?
Jika ada solusi menggunakan JQuery, saya akan menyukainya.
Catatan: Ya, parameter halaman harus dalam array karena jumlahnya banyak. Saya pikir saya akan menggunakan bit.ly untuk mempersingkat tautan sesudahnya.
Jawaban:
sumber
{["
). Apakah ada cara untuk menyandikan hanya karakter yang diperlukan, sehingga saya dapat mempersingkat url saya?Anda dapat menggunakan
encodeURIComponent
untuk dengan aman menyandikan bagian-bagian dari string kueri:atau jika Anda mengirimkan ini sebagai permintaan AJAX:
sumber
Saya ingin melakukan hal yang sama. masalah bagi saya adalah url saya terlalu panjang. Saya menemukan solusi hari ini menggunakan pustaka jsUrl.js Bruno Jouhier .
Saya belum mengujinya dengan sangat teliti. Namun, berikut adalah contoh yang menunjukkan panjang karakter output string setelah mengenkode objek besar yang sama menggunakan 3 metode berbeda:
jQuery.param
JSON.stringify + encodeURIComponent
JSURL.stringify
jelas JSURL memiliki format yang paling optimal untuk urlEncoding objek js.
utas di https://groups.google.com/forum/?fromgroups=#!topic/nodejs/ivdZuGCF86Q menunjukkan tolok ukur untuk encoding dan parsing.
Catatan : Setelah pengujian, sepertinya pustaka jsurl.js menggunakan fungsi ECMAScript 5 seperti Object.keys, Array.map, dan Array.filter. Oleh karena itu, ini hanya akan berfungsi di browser modern (no mis. 8 ke bawah). Namun, apakah polyfill untuk fungsi-fungsi ini yang akan membuatnya kompatibel dengan lebih banyak browser.
sumber
Menggunakan
encodeURIComponent()
:sumber
Saya akan menawarkan alternatif yang aneh. Terkadang lebih mudah untuk menggunakan pengkodean yang berbeda, terutama jika Anda berurusan dengan berbagai sistem yang tidak semuanya menangani detail pengkodean URL dengan cara yang sama. Ini bukan pendekatan yang paling umum, tetapi dapat berguna dalam situasi tertentu.
Daripada menyandikan data dengan URL, Anda dapat menyandikannya dengan base64. Manfaat dari ini adalah data yang dikodekan sangat umum, hanya terdiri dari karakter alfa dan terkadang jejak
=
. Contoh:Larik string JSON:
Data itu, dienkode URL sebagai
data
param:Sama, berenkode base64:
Pendekatan base64 bisa sedikit lebih pendek, tetapi yang lebih penting, ini lebih sederhana. Saya sering mengalami masalah saat memindahkan data yang dikodekan URL antara cURL, browser web, dan klien lain, biasanya karena tanda kutip,
%
tanda yang disematkan, dan sebagainya. Base64 sangat netral karena tidak menggunakan karakter khusus.sumber
/
dengan$
,_
atau karakter lain yang tidak memerlukan pengkodean url per RFC 3986.Jawaban yang diberikan oleh Delan sempurna. Hanya menambahkannya - jika seseorang ingin memberi nama parameter atau meneruskan beberapa string JSON secara terpisah - kode di bawah ini dapat membantu!
JQuery
PHP
Semoga ini membantu!
sumber