Apakah ada cara standar untuk melewatkan array melalui string kueri?
Agar jelas, saya memiliki string kueri dengan beberapa nilai, salah satunya adalah nilai array. Saya ingin agar nilai string kueri diperlakukan sebagai array- Saya tidak ingin array meledak sehingga tidak dapat dibedakan dari variabel string kueri lainnya.
Juga, menurut jawaban posting ini , penulis menyarankan bahwa dukungan string kueri untuk array tidak ditentukan. Apakah ini akurat?
EDIT:
Berdasarkan jawaban @ Alex, tidak ada cara standar untuk melakukan ini, jadi tindak lanjut saya adalah lalu bagaimana cara mudah untuk mengenali bahwa paramater yang saya baca adalah array dalam PHP dan Javascript ?
Apakah bisa diterima untuk menyebutkan beberapa params dengan nama yang sama, dan dengan cara itu saya akan tahu bahwa mereka termasuk dalam array? Contoh:
?myarray=value1&myarray=value2&myarray=value3...
Atau apakah ini praktik yang buruk?
Jawaban:
Inilah yang saya temukan:
Mengirimkan bidang formulir multi-nilai, yaitu mengirimkan array melalui GET / POST vars, dapat dilakukan beberapa cara yang berbeda, karena standar tidak harus dijabarkan.
Tiga cara yang mungkin untuk mengirim bidang multi-nilai atau array adalah:
?cars[]=Saab&cars[]=Audi
(Cara terbaik - PHP membaca ini ke dalam array)?cars=Saab&cars=Audi
(Bad way- PHP hanya akan mendaftarkan nilai terakhir)?cars=Saab,Audi
(Belum mencoba ini)Formulir Contoh
Pada formulir, bidang multi-nilai bisa berbentuk kotak pilih yang disetel ke beberapa :
(CATATAN: Dalam hal ini, penting untuk memberi nama kontrol pilih
some_name[]
, sehingga vars permintaan yang dihasilkan akan didaftarkan sebagai array oleh PHP)... atau sebagai beberapa bidang tersembunyi dengan nama yang sama :
CATATAN: Menggunakan
field[]
untuk beberapa nilai sangat buruk didokumentasikan. Saya tidak melihat penyebutan itu di bagian kunci multi-nilai dalam string Kueri - Wikipedia , atau dalam dokumen W3C yang berurusan dengan input multi-pilih.MEMPERBARUI
Seperti yang ditunjukkan oleh komentator, ini sangat spesifik kerangka kerja. Beberapa contoh:
String kueri:
Rel:
Sudut:
( Diskusi sudut )
Lihat komentar untuk contoh di node.js , Wordpress , ASP.net
Mempertahankan pesanan: Satu hal lagi yang perlu dipertimbangkan adalah bahwa jika Anda perlu mempertahankan urutan barang-barang Anda (yaitu array sebagai daftar yang dipesan), Anda benar-benar hanya memiliki satu opsi, yang melewati daftar nilai yang dibatasi, dan secara eksplisit mengubahnya menjadi sebuah array sendiri.
sumber
?cars=Saab&cars=Audi
formulir?cars=Saab&cars=Audi
dan?cars[]=Saab&cars[]=Audi
diubah menjadi array. Namun,?cars=Saab
berakhir sebagai string, tetapi?cars[]=Saab
merupakan array dengan elemen tunggal.?cars[]=Saab&cars[]=Audi
Tidak boleh ada kurung siku atau kurung siku perlu indeks /String kueri membawa data tekstual sehingga tidak ada pilihan selain meledak array, menyandikannya dengan benar dan meneruskannya dalam format representasional pilihan Anda:
p1=value1&pN=valueN...
data=[value1,...,valueN]
data={p1:value1,...,pN:valueN}
dan kemudian mendekode dalam kode sisi server Anda.
sumber
JSON.stringify
danJSON.parse
!json_encode
iturawurlencode
danjson_decode
di halaman lain.Saya tidak berpikir ada standar.
Setiap lingkungan web menyediakan 'standar' sendiri untuk hal-hal seperti itu. Selain itu, url biasanya terlalu pendek untuk apa pun (batas 256 byte pada beberapa browser). Tentu saja array / data yang lebih lama dapat dikirim dengan permintaan POST.
Namun, ada beberapa metode:
Ada cara PHP, yang menggunakan tanda kurung siku (
[
,]
) di kueri URL. Misalnya kueri seperti?array_name[]=item&array_name[]=item_2
telah dikatakan berfungsi, meskipun tidak didokumentasikan dengan buruk, dengan PHP secara otomatis mengubahnya menjadi sebuah array. Sumber: https://stackoverflow.com/a/9547490/3787376Format pertukaran data objek (misalnya JSON - situs web resmi , dokumentasi PHP ) juga dapat digunakan jika mereka memiliki metode untuk mengonversi variabel ke dan dari string seperti yang dilakukan JSON.
Juga url-encoder (tersedia untuk sebagian besar bahasa pemrograman) diperlukan untuk mendapatkan permintaan HTTP untuk menyandikan data string dengan benar.
Meskipun "metode tanda kurung siku" sederhana dan berfungsi, ia terbatas pada PHP dan array.
Jika jenis variabel lain seperti kelas atau variabel lewat dalam string kueri dalam bahasa selain PHP diperlukan, metode JSON disarankan.
Contoh dalam metode PHP JSON (metode 2):
Kode untuk halaman penerima (PHP):
sumber
Saya merasa akan sangat membantu bagi seseorang yang mencari untuk melewatkan array dalam string kueri ke servlet. Saya menguji string kueri di bawah ini dan bisa mendapatkan nilai array menggunakan req.getgetParameterValues (); metode. Di bawah ini adalah string kueri yang saya lewati melalui browser.
checkbox adalah array parameter saya di sini.
sumber
Ini bekerja untuk saya:
Di tautan, ke atribut memiliki nilai:
Rute dapat menangani ini:
Untuk Banyak array:
Rute tetap sama.
SCREENSHOT
sumber
Anda menyebutkan PHP dan Javascript dalam pertanyaan Anda, tetapi tidak dalam tag. Saya mencapai pertanyaan ini dengan maksud meneruskan array ke tindakan MVC.Net.
Saya menemukan jawaban untuk pertanyaan saya di sini : format yang diharapkan adalah yang Anda usulkan dalam pertanyaan Anda, dengan beberapa parameter memiliki nama yang sama.
sumber
Saya menggunakan Bereaksi dan Rel. Aku melakukannya:
js
sumber
Anda dapat menggunakan http_build_query untuk menghasilkan querystring yang disandikan URL dari sebuah array di PHP. Sementara querystring yang dihasilkan akan diperluas, Anda dapat memutuskan pemisah unik yang Anda inginkan sebagai parameter untuk
http_build_query
metode ini, jadi ketika datang ke decoding, Anda dapat memeriksa pemisah apa yang digunakan. Jika itu yang unik yang Anda pilih, maka itu akan menjadi querystring array kalau tidak itu akan menjadi querystrings normal.sumber
Meskipun tidak ada standar pada bagian URL, ada satu standar untuk JavaScript. Jika Anda mengirimkan objek yang berisi array ke
URLSearchParams
, dan memanggilnyatoString()
, itu akan mengubahnya menjadi daftar item yang dipisahkan koma:sumber
Periksa
parse_string
fungsi http://php.net/manual/en/function.parse-str.phpIni akan mengembalikan semua variabel dari string kueri, termasuk array.
Contoh dari php.net:
sumber