recherche

Maison  >  Questions et réponses  >  le corps du texte

AJAX POST et le signe plus (+) - comment l'encoder ?

Je publie le contenu d'un champ de formulaire dans un script PHP via AJAX et j'utilise JavaScript pour m'échapper (field_contents). Le problème est que tous les signes plus sont supprimés et remplacés par des espaces. Comment puis-je « encoder » en toute sécurité le signe plus, puis le « décoder » de manière appropriée en PHP

?
P粉124070451P粉124070451488 Il y a quelques jours662

répondre à tous(2)je répondrai

  • P粉010967136

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

    Essayez-le en JavaScript :

    encodeURIComponent()

    PHP :

    urldecode($_POST['field']);

    répondre
    0
  • P粉674999420

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

    Utilisez encodeuriccomponent() en JS et PHP et vous devriez recevoir la valeur correcte.

    REMARQUE : Lorsque vous accédez à $_GET, $_POST ou $_REQUEST en PHP, vous récupérez une valeur déjà décodée.

    Exemple :

    Dans votre 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

    Sur votre serveur

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

    Seule la requête HTTP d'origine contient des données codées en URL.

    Pour les requêtes GET, vous pouvez le récupérer à partir de l'URI. $_SERVER['REQUEST_URI'] ou $_SERVER['QUERY_STRING']. Pour le POST codé en urlen, file_get_contents('php://stdin')

    Remarque :

    Decode() s'applique uniquement aux caractères codés sur un seul octet. Cela ne fonctionne pas pour toute la gamme UTF-8.

    par exemple :

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

    Remarque : "%C4%80" is equivalent to: escape('xc4x80')

    Il s'agit de la séquence d'octets représentant  en UTF-8 (xc4x80). Donc, si vous utilisez encodeuriccomponent(), votre côté serveur doit savoir qu'il reçoit UTF-8. Sinon, PHP gâchera l'encodage.

    répondre
    0
  • Annulerrépondre