搜尋

首頁  >  問答  >  主體

AJAX POST和加號(+)-如何編碼?

我透過AJAX發布一個表單欄位的內容到PHP腳本,並使用JavaScript來轉義(field_contents)。問題是任何加號都被去掉了,取而代之的是空格。我怎麼能安全地「編碼」加號,然後適當地「解碼」它在PHP方面?

P粉124070451P粉124070451521 天前685

全部回覆(2)我來回復

  • P粉010967136

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

    在JavaScript中試試看:

    encodeURIComponent()

    PHP中:

    urldecode($_POST['field']);

    回覆
    0
  • P粉674999420

    P粉6749994202023-07-22 00:39:11

    在JS和PHP中使用encodeuriccomponent(),你應該會收到正確的值。

    注意:當您在PHP中存取$_GET、$_POST或$_REQUEST時,您正在檢索已經解碼的值。

    範例:

    在你的JS中:

    // 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

    在你的伺服器上

    echo $_GET['string']; // "+"

    只有原始的HTTP請求包含url編碼的資料。

    對於GET請求,您可以從URI中檢索它。 $_SERVER['REQUEST_URI']或$_SERVER['QUERY_STRING']。對於urlencoded POST, file_get_contents('php://stdin')

    註:

    Decode()僅適用於單字節編碼的字元。它不適用於整個UTF-8範圍。

    eg:

    text = "\u0100"; // Ā
    // incorrect
    escape(text); // %u0100 
    // correct
    encodeURIComponent(text); // "%C4%80"

    Note: "Ā" is equivalent to: escape('\xc4\x80')

    這是在UTF-8中表示Ā的位元組序列(\xc4\x80)。因此,如果您使用encodeuriccomponent(),您的伺服器端必須知道它正在接收UTF-8。否則PHP會打亂編碼。

    回覆
    0
  • 取消回覆