AJAX ne définit pas une variable PHP $ _POST, elle renvoie donc ‘Undefined’

Je suis nouveau sur AJAX et pas très bon sur PHP. $.AJAX envoyer simplement une chaîne disant “Bonjour” à ma page PHP en utilisant la fonction JQuery $.AJAX . Jusqu’ici, AJAX a réussi à envoyer les informations à la page et à les consigner dans la console, mais les données ne sont pas stockées dans la variable POST.

N’oubliez pas que je ne suis pas paresseux en venant sur ce forum et en demandant de l’aide, mais je n’ai pas d’autre choix car je cherche depuis environ 2 jours à résoudre ce problème et je n’ai rien trouvé qui fonctionne. .

Voici mon HTML ( order.html ) – Ce n’est pas tout mon HTML mais c’est tout ce dont vous aurez besoin):

   

Voici mon JavaScript ( order.js – Encore une fois, je ne fournis que le code nécessaire)

 $("#order-btn").click(function() { var txt = "Hello!"; $.ajax({ url: "PHP/sendMail.php", type: "POST", data: {data: txt}, dataType: "html", asyc: true, success: function(data){ console.log(data); }, error: function (xhr, ajaxOptions, thrownError) { alert("ERROR:" + xhr.responseText+" - "+thrownError); } }); }); 

Voici mon PHP (sendMail.PHP – je ne fournis que le code nécessaire)

 <?php if(isset($_POST['data'])) { $data = $_POST['data']; echo $data; } else { echo "Failed to grab data."; } 

Pour clarifier, dans mon code actuel, l’URL est l’URL complète de la page de mon site Web.

Faites-moi savoir dans les commentaires si vous souhaitez consulter le site pour mieux comprendre comment et pourquoi j’ai besoin de cette fonctionnalité.

MISE À JOUR ET SOLUTION:

D’après l’aide que j’ai reçue, je comprends maintenant qu’AJAX ne mettra à jour que les informations de la page en cours (par exemple, si vous avez une fonction AJAX sur index.html, vous ne pouvez exécuter AJAX que sur cette page et ne pouvez pas transférer d’informations pages)

Pour résoudre mon problème, j’ai arrêté d’envoyer les utilisateurs à la page sendMail.php et modifié le contenu HTML de la page sur laquelle j’étais actuellement (order.html) dans la méthode de réussite $ .ajax.

Voici le code JavaScript mis à jour:

 $("#order-btn").click(function() { var txt = "Hello!"; $.ajax({ url: "order.html", type: 'POST', data: {data: txt}, dataType: 'html', success: function(data){ if(parseInt(data)!=0) { $("body").html(data); } }, error: function (xhr, ajaxOptions, thrownError) { alert("ERROR:" + xhr.responseText+" - "+thrownError); } }); }); 

J’aimerais remercier tous ceux qui ont aidé 🙂

 $.ajax({ //create an ajax request to load_page.php type: “POST”, url: “load-page.php”, data: {page:url}, //with the page number as a parameter dataType: “html”, //expect html to be returned success: function(msg){ if(parseInt(msg)!=0) //if no errors { $('#pageContent').html(msg); //load the returned html into pageContet $('#loading').css('visibility','hidden');//and hide the rotating gif } }); 

Comme dans l’exemple ci-dessus, load-page.php est appelé, ainsi les données renvoyées seront affichées dans pageContent, qui est l’id de certains div, etc., et cette div n’est pas sur load-page.php. est envoyé.

peut-être fera-t-il lien de référence: Lien de référence !

Ce n’est pas comme cela que vous avez appelé sendMail.php ce fichier et les données retournées seront disponibles dans la page à partir de laquelle il a été appelé.

Supposons que, avec le bouton, vous cliquez sur la page A que vous avez appelée sendMail.php. La réponse ajax est donc retournée à la page A et n’a pas été envoyée à sendmAil.php.

La première chose, garantit que votre API fonctionne. Utiliser une chaîne d’outils pour API, comme postman ou insomnie .

Si votre API retourne ce que vous voulez, vous accédez à votre code javascript, car je ne vois aucun problème dans votre code. J’ai même utilisé votre code et travaillé.

Puis utilisez session

 session_start(); //at the top $_SESSION['mydata'] = $data; // something like it 

mais pour autant que je sache, il est nécessaire d’actualiser la page pour que la session fonctionne. Essayez-le