AJAX POST dan tanda tambah (+) - bagaimana untuk mengekodnya?
P粉124070451
P粉124070451 2023-07-21 09:47:06
0
2
658

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粉124070451
P粉124070451

membalas semua(2)
P粉010967136

Cuba dalam JavaScript:

encodeURIComponent()

PHP:

urldecode($_POST['field']);
P粉674999420

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan