Rumah > Soal Jawab > teks badan
Saya menyiarkan kandungan medan borang ke skrip PHP melalui AJAX dan menggunakan JavaScript untuk melarikan diri (field_contents). Masalahnya ialah sebarang tanda tambah dialih keluar dan digantikan dengan ruang. Bagaimanakah saya boleh "mengekod" tanda tambah dengan selamat dan kemudian "menyahkod" dengan sewajarnya dalam PHP
P粉0109671362023-07-22 00:53:41
Cuba dalam JavaScript:
encodeURIComponent()
PHP:
urldecode($_POST['field']);
P粉6749994202023-07-22 00:39:11
Gunakan encodeuriccomponent() dalam JS dan PHP dan anda harus menerima nilai yang betul.
NOTA: Apabila anda mengakses $_GET, $_POST atau $_REQUEST dalam PHP, anda sedang mendapatkan semula nilai yang telah dinyahkodkan.
Contoh:
Dalam JS anda:
// url encode your string var string = encodeURIComponent('+'); // "%2B" // send it to your server window.location = 'http://example.com/?string='+string; // http://example.com/?string=%2B
Pada pelayan anda
echo $_GET['string']; // "+"
Hanya permintaan HTTP asal mengandungi data berkod URL.
Untuk permintaan GET, anda boleh mendapatkannya daripada URI. $_SERVER['REQUEST_URI'] atau $_SERVER['QUERY_STRING']. Untuk POST berkod urlen, file_get_contents('php://stdin')
Nota:
Nyahkod() hanya digunakan pada aksara yang dikodkan bait tunggal. Ia tidak berfungsi untuk keseluruhan julat UTF-8.
cth:
text = "\u0100"; // Ā // incorrect escape(text); // %u0100 // correct encodeURIComponent(text); // "%C4%80"
Nota: "%C4%80"
is equivalent to: escape('xc4x80')
Ini ialah jujukan bait yang mewakili Ā dalam UTF-8 (xc4x80). Jadi jika anda menggunakan encodeuriccomponent(), pihak pelayan anda mesti tahu bahawa ia menerima UTF-8. Jika tidak PHP akan merosakkan pengekodan.