POST et nouvelle page pour OnClick

Petit nouveau ! | 7 Messages

09 oct. 2020, 07:42

Bonjour à tous

Je n'arrive pas ç envoyer une variable en POST. Je tourne en round depuis un moment.

J'ai une table aliment par mysql. Mon TR est comme ceci:

Code : Tout sélectionner

echo "<tr onClick=\"GetTR(this);\">
......

et la fonctionne comme ceci:

Code : Tout sélectionner

function GetTR(el){ var toto = el.cells[0].innerHTML alert("ID="+toto); $.ajax({ type: 'POST', url: 'apiary.php', data: {'apiary': toto}, }); window.location.replace("apiary.php");
}

La nouvelle page est bien appeler, mais je n'ai pas la valeur POST.
Merci d'avance pour votre aide.

++
Ossy

Mammouth du PHP | 2703 Messages

09 oct. 2020, 14:11

il faut débugger avec les outils de développement de son navigateur.
y-a-t il une erreur javascript ?
l'url apiary.php est appelé en méthode post et/ou get ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

09 oct. 2020, 14:41

+1 pour les outils de dev du navigateur : Ctrl+Maj+i puis onglet réseau pour voir les appels

Quoi qu’il en soit, si tu utilises :

Code : Tout sélectionner

window.location.replace("apiary.php");
forcément ça te redirige via un appel GET

Juste avant tu fais un appel Ajax mais tu ne fais rien de la réponse.
Logiquement tu devrais ajouter un .done() ou un paramètre success pour traiter le retour de ton appel Ajax.
Cf la doc Jquery : https://api.jquery.com/jquery.ajax/ ou ce tuto : https://openclassrooms.com/fr/courses/1 ... /r-1569584
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 7 Messages

09 oct. 2020, 19:55

Merci de vos réponses.

J'essai avec le code modifié, mais sans beaucoup de succès.

Code : Tout sélectionner

var toto = el.cells[0].innerHTML $.ajax({ type : 'POST', url : 'apiary.php', data : {'apiary':toto}, done: function(reponse){ window.location = reponse; } });
Je dois avoue que je ne comprend pas tout :(

Je ne sais pas non plus debugger Javascript et PHP.

Si vous avez un plus de conseil pour moi :) Merci

Ossy

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

09 oct. 2020, 20:57

window.location ça ne peut faire qu'un appel en GET .
Ne mets donc pas window.location.

Et avec ton appel Ajax normalement dans la console de ton navigateur web (Ctrl+Maj+i puis onglet réseau) tu devrais voir ton appel en POST.
Ensuite à toi de voir le traitement que tu veux faire
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 7 Messages

09 oct. 2020, 21:40

Merci @athur

Je ne veux pas grand chose, mais je n'y arrive pas.
J'ai une table html. Quand je click sur une ligne, je lance une fonction avec onClick. Je veux récupère la valeur de la première colonne et envoyer cette valeur en POST sur une autre page.
Je le croyais simple, mais la je bute, snif

++
Ossy

Mammouth du PHP | 1967 Messages

10 oct. 2020, 08:48

Pourquoi d'office en POST ?

si la quantité de donnée n'est pas énorme (l'ID d'une ligne par exemple, passer ton argument en GET sera plus simple. Notament avec window.location('page.php?param=valeur');
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Petit nouveau ! | 7 Messages

10 oct. 2020, 10:59

Bonjour Spols

Oui GET c'est plus simple. Je voulais le faire en POST pour apprendre et je n'y croyais pas un instant que c'est ci complique pour ma petite tète.

Merci

Osyy