Heim  >  Fragen und Antworten  >  Hauptteil

AJAX POST und das Pluszeichen (+) – wie kodiert man es?

Ich poste den Inhalt eines Formularfelds über AJAX in einem PHP-Skript und verwende JavaScript zum Escape (field_contents). Das Problem besteht darin, dass alle Pluszeichen entfernt und durch Leerzeichen ersetzt werden. Wie kann ich das Pluszeichen sicher „kodieren“ und dann entsprechend in PHP „dekodieren“?

P粉124070451P粉124070451456 Tage vor620

Antworte allen(2)Ich werde antworten

  • P粉010967136

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

    在JavaScript中试试:

    encodeURIComponent()

    PHP中:

    urldecode($_POST['field']);

    Antwort
    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: "%C4%80" is equivalent to: escape('\xc4\x80')

    这是在UTF-8中表示Ā的字节序列(\xc4\x80)。因此,如果您使用encodeuriccomponent(),您的服务器端必须知道它正在接收UTF-8。否则PHP会打乱编码。

    Antwort
    0
  • StornierenAntwort