Affichage d'une requête Ajax dans un script PHP

Eléphanteau du PHP | 36 Messages

01 nov. 2023, 19:29

sinon ici

"if ($_SERVER["REQUEST_METHOD"] == "POST" || $_SERVER["REQUEST_METHOD"] == "GET") { ... "
l'état du panier est toujours a ce niveau : "Le panier a été enregistré avec succès." dans la console comme dans l'affichage


if ($_SERVER["REQUEST_METHOD"] == "POST" && $_SERVER["REQUEST_METHOD"] == "GET") {
ici plus rien ne se passe la varaible reste vide partout (console et affichage)


ici var_dump( $_SERVER["REQUEST_METHOD"]) ;
J'ajoute que coté affichage nous avons GET qui aparait mais coté reseau c'est POST

Avatar du membre
Mammouth du PHP | 1564 Messages

01 nov. 2023, 20:04

Laisse :

if ($_SERVER["REQUEST_METHOD"] == "POST" || $_SERVER["REQUEST_METHOD"] == "GET") {

Fais les vérifications de $_POST ensuite si cette condition est vraie.

Eléphanteau du PHP | 36 Messages

02 nov. 2023, 15:47

En effet c'est bien les post que je souhaite traiter par la suite. C'est le contenu du panier. Encore une fois toujours la même problématique :) ici dans votre vérification, j'ai simplifié au max le php :

if ($_SERVER["REQUEST_METHOD"] == "POST" || $_SERVER["REQUEST_METHOD"] == "GET") {
var_dump($_POST["cart"],'ici le $_POST dans la condition');
}
else{
var_dump($_POST["cart"],'ici le $_POST');
}

a l'affichage sur ma page. : $_POST["cart"] is undifined (normal)
au déclenchement de l'ajax : $_POST["cart"] is undifined (pas normal)

Au même moment dans la console/réseau/reponse, sa fonctionne correctement lors du déclenchement :

string(69) "{"products":[{"id":1,"title":"Personnalité","price":29}],"total":29}"
string(31) "ici le $_POST dans la condition"

Aie aie aie qu'elle casse tête, merci encore pour toutes vos interventions ça stimule

Eléphanteau du PHP | 36 Messages

02 nov. 2023, 15:48

En gros cette condition est vrai dans la console mais fausse sur la page !

Avatar du membre
Mammouth du PHP | 1564 Messages

02 nov. 2023, 16:05

Pour tes prochains posts, mes en valeurs tes codes PHP avec la balise adéquate.

Fait cette fois-ci un var_dump de $_POST et vois ce qu'il a comme info, on appelle cela un "débug" afin de voir ce qui est envoyé et permettre de comprendre d'où vient le problème. Par exemple : cartJSON n'est peut être pas définit ? Dans ce cas là, faire un console.log de cartJSON sur ta page et voir ce que dit la console.

Eléphanteau du PHP | 36 Messages

02 nov. 2023, 19:56

coté script carJSON est ok : voici la requete ajax :

$.ajax({
type: "POST",
url: "./index.php",
data: { cart: cartJSON },
cache: false, // Désactive la mise en cache
}).done(function(response) {
// Mettez à jour le contenu de l'élément avec l'ID "ajax"
document.getElementById('ajax').innerHTML = '<h5 class="modal-title">' + cartJSON + '</h5>';
});

le getElementById affiche correctement le panier en html.

console ET html de carJson au clique
{"PRODUCTS":[{"ID":1,"TITLE":"PERSONNALITÉ","PRICE":29}],"TOTAL":29}


un var_dump de $_POST a l'affihage un array vide , au clique idem.

Maintenant dans l'insecteur on retrouver $post cat :

<pre>Array
(
[cart] => {"products":[{"id":1,"title":"Personnalité","price":29}],"total":29}
)
</pre>

Avatar du membre
Mammouth du PHP | 1564 Messages

02 nov. 2023, 20:53

Met en valeur tes codes STP.

L'erreur pourrait venir du fait que du met "type:"POST",", au lieu de "method: "POST","
"type : Un alias de method. Vous devez utiliser type si vous utilisez des versions de jQuery antérieures à la version 1.9.0."

Eléphanteau du PHP | 36 Messages

02 nov. 2023, 21:36

ok désolé jz le ferrais pour les prochains. Je suis sur jquery-3.3.1 mais j'ai quand même tenter (et vider le cash évidement), et tjs pareil ici entre l'affichage figé mais le reseau agit correctement

Eléphanteau du PHP | 36 Messages

02 nov. 2023, 21:41

Je remets le code ici
$cart = 'votre panier est vide';

if ($_SERVER["REQUEST_METHOD"] === "POST" && isset($_POST["cart"])) {
    $cartJSON = $_POST["cart"];
    $cartData = json_decode($cartJSON, true);
    dd($cartData);
}
<div id="ajax"> </div>
<h5 class="modal-title"><span class="text-left titre">$cart doit s'afficher ici : <?= $cart; ?></span></h5>									

Code : Tout sélectionner

save: function() { // Convertissez le panier en chaîne JSON const cartJSON = JSON.stringify(this); $.ajax({ method: "POST", url: "./index.php", data: { cart: cartJSON }, cache: false, // Désactive la mise en cache }).done(function(response) { // Mettez à jour le contenu de l'élément avec l'ID "ajax" document.getElementById('ajax').innerHTML = '<h5 class="modal-title">' + cartJSON + '</h5>'; }); displayCart(); },

Avatar du membre
Mammouth du PHP | 1564 Messages

02 nov. 2023, 22:06

à :
<div id="ajax"> </div>
<h5 class="modal-title"><span class="text-left titre">$cart doit s'afficher ici : <?= $cart; ?></span></h5>	
Tu affichera toujours votre panier est vide car $cart n'est pas redéfinit ailleurs.

Eléphanteau du PHP | 36 Messages

02 nov. 2023, 23:00

desolé c'est une erreur de copier coller

$cart = 'votre panier est vide';

if ($_SERVER["REQUEST_METHOD"] == "POST" || $_SERVER["REQUEST_METHOD"] == "GET") {
    $cartJSON = $_POST["cart"];
    $cartData = json_decode($cartJSON, true);
    $cart = $cartData; // Vous pouvez stocker ces données dans $cart pour une utilisation ultérieure.
    dd($cart);
}

ici j'ai testé d'afficher $_POST['cart'] en html aussi mais tjs undifined
 <div id="ajax">
										 	
										</div>
										<h5 class="modal-title"><span class="text-left titre">$cart doit s'afficher ici : <?= $cart; ?></span></h5>
										<h5 class="modal-title"><span class="text-left titre">$_POST doit s'afficher ici : <?= $_POST['cart']; ?></span></h5>
									

Avatar du membre
Mammouth du PHP | 1564 Messages

02 nov. 2023, 23:17

Ça sent le ChatGPT ce commentaire très bien rédigé, je me trompe ? :mrgreen:

Il a pas réussi à solution ton problème ?

Mammouth du PHP | 2703 Messages

02 nov. 2023, 23:43

en appelant en ajax un autre fichier que index.php, vous auriez mieux compris qui fait quoi.

index.php quand
<h5 class="modal-title"><span class="text-left titre">$_POST doit s'afficher ici : <?= $_POST['cart']; ?></span></h5>
est exécuté, est appelé en méthode get, donc cela ne peut pas fonctionner.

Avatar du membre
Mammouth du PHP | 1564 Messages

02 nov. 2023, 23:47

or 1 n'a pas tord, renommer le fichier index.php (créer un nouveau fichier) en cart.php sera plus adéquate.

Mammouth du PHP | 2703 Messages

02 nov. 2023, 23:53

cart.php, c'est pour le fichier que voit le client dans son navigateur, qui affiche le panier.
là, un bon nom serait ajax-save-cart.php