cari

Rumah  >  Soal Jawab  >  teks badan

AJAX POST dan tanda tambah (+) - bagaimana untuk mengekodnya?

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粉124070451P粉124070451488 hari yang lalu660

membalas semua(2)saya akan balas

  • P粉010967136

    P粉0109671362023-07-22 00:53:41

    Cuba dalam JavaScript:

    encodeURIComponent()

    PHP:

    urldecode($_POST['field']);

    balas
    0
  • P粉674999420

    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.

    balas
    0
  • Batalbalas