Était en train d'expérimenter avec un post HTTP de base avec php et a rencontré ce problème.php codé valeurs post param
1.php:
<head>
<script src="/scripts/jquery.js"></script>
</head>
<body>
<script>
function hw(){
$.ajax({
type: 'POST',
url: '/2.php',
data: 'param=a+b+c',
success: function(d){
console.log('server said ' + d);
}
});
}
</script>
<button onclick="javascript:hw();">CLick me</button>
</body>
2.PHP:
<?php
echo $_POST['param'];
?>
l'appel retourne Ajax avec 'a b c' au lieu de 'a + b + c'. Pourquoi est-ce que '+' est encodé en '' (espace)?
J'ai ensuite essayé d'utiliser le type de contenu de la demande de publication en tant que 'text/plain'
au lieu de 'application/x-www-form-urlencoded'
par défaut. Dans ce cas, $_POST['param']
est vide? Je veux comprendre ce qui se passe exactement dans ces deux cas. Que dois-je faire du côté serveur pour récupérer les données d'origine ('+')?
Depuis qu'il utilise jQuery, c'est la solution la plus simple et la plus propre! +1! – jwueller
pourquoi cela fonctionne-t-il? jquery utilise encodeURIComponent en interne? – letronje
@letronje J'ai vérifié la source jquery, et trouvé: s [s.length] = encoderURIComponent (clé) + "=" + encoderURIComponent (valeur); – barbushin