7
votes

Poster sans rediriger avec php

J'ai une forme simple pour une liste de diffusion que j'ai trouvée chez http: // www. NotNotBit.com/Projects/Mailing-List/

Le problème est quand je clique sur Soumettre tout ce que je veux que ce soit à faire est d'afficher un message sous le formulaire actuel indiquant "Merci de vous abonner" sans redirection. Au lieu de cela, il me dirige une nouvelle page. P>

<form method="POST" action="mlml/process.php"> 
    <input type="text" name="address" id="email" maxlength="30" size="23"> 
    <input type="submit" value="" id="submit"name="submit"  >
</form>     


0 commentaires

9 Réponses :


1
votes

Vous devez utiliser Ajax. Mais cela nécessite que JavaScript soit actif chez les utilisateurs brwoser. À mon avis, c'est la seule façon de faire sans rediriger.


0 commentaires

3
votes

Il redirige vers une page différente en raison de votre attribut action .

Essayez: xxx

La page indique votre "merci "Message après que l'utilisateur clique sur votre bouton d'envoi.

De plus, puisque je ne connais pas le nom de la page, votre code est activé, j'ai inséré une variable superglobale qui insérera le nom de fichier Le script exécutant actuellement par rapport à la racine du document . Donc, cette page se soumettra à elle-même.


3 commentaires

Bien que si vous souhaitez que la page ne soit pas rafraîchie, la réponse de GameCripting est correcte. Vous aurez besoin d'AJAX si vous traitez des informations sur PHP. Sinon, vous pouvez simplement utiliser JavaScript lorsque Prashant Singh suggère.


En outre, vous pouvez simplement laisser action vide si vous souhaitez publier à l'URL actuelle. Pas besoin d'impliquer PHP là-bas.


@Goleztrol merci pour cela. Je n'ai jamais su ni testé la manière dont la forme se comporte sans l'attribut d'action.



-2
votes

Utilisez



  form onsubmit="takeActions();return false;"
  
  function takeAction(){
  var value1 = document.getElementById('name').innerHTML;
  // make an AJAX call and send all the values to it
  // Once , you are done with AJAX, time to say Thanks :)
  document.getElementById('reqDiv').innerHTML = "Thank You for subscribing";
  }
   


2 commentaires

où showMessage () montre le message REQ à la position requise sur la page Web


Vous pouvez traverser Dom et utiliser les valeurs remplies par l'utilisateur dans la fonction showMessage (). Je pense que cela réparera son problème



5
votes

Vous aurez besoin d'AJAX pour publier les données sur votre serveur. La meilleure solution consiste à mettre en œuvre la posture régulière, de sorte que cela fonctionnera au moins. Ensuite, vous pouvez vous connecter à celui utilisant JavaScript. De cette façon, l'affichage fonctionnera (avec une rafraîchissement) lorsque quelqu'un n'a pas de JavaScript.

Si trouvé a Bon article sur la publication des formulaires avec Ajax en utilisant JQuery .

En outre, vous pouvez choisir de publier les données sur la même URL. La bibliothèque de jQuery ajoutera le http_x_requezted_with en-tête, de laquelle vous pouvez vérifier la valeur dans votre script de serveur. Cela vous permettra de poster sur la même URL, mais de renvoyer une valeur différente (page entière ou juste une réponse spécifique, en fonction d'une demande AJAX ou non). Vous pouvez donc réellement obtenir l'URL de votre formulaire et vous n'avez pas besoin de le coder dans votre JavaScript. Cela vous permet d'écrire un script plus maintenu et peut même conduire à une méthode de manutention de formulaire générique que vous pouvez réutiliser pour toutes les formes que vous souhaitez poster avec Ajax.


0 commentaires

0
votes

Juste une idée qui pourrait fonctionner pour vous supposer que vous n'avez aucun contrôle sur la page que vous affichez:

Créez votre propre "cible PHP proxy" pour l'action, puis répondez avec le message que vous souhaitez. Les données postées sur votre fichier PHP peuvent ensuite être transférées avec http_post_data (effectuez la demande postale avec des données pré-codées). Vous devrez peut-être l'analyser un peu.


0 commentaires

5
votes

assez simple avec jQuery: xxx

et dans votre processus.php: xxx


0 commentaires

0
votes

Envoyer une demande de formulaire sans redirection n'est impossible dans PHP, mais il y a une façon de travailler autour de lui.

puis pour la page PHP son envoi pour le faire faire quelque chose mais n'édorquez pas un résultat, tout simplement rediriger avec

en-tête ('emplacement: http://yourherurl.com/formpage');

Si vous voulez que cela renvoie un message de réussite, faites simplement

$ SUCCESS = "vrai"; Header ('Emplacement: http://yourherurLL.com/Formpage?success='.еSuccess);

et sur le formulaire Ajouter

$ réussite = $ _GET ["succès"];

Si ($ réussite == "vrai") {ECHO "Votre message de réussite"; } else {echo "Votre message d'échec ';


0 commentaires

0
votes

Version anglaise

Il semble que personne n'a résolu ce problème sans JavaScript ou Ajax Strong> EM> P>

Vous pouvez également faire ce qui suit. / P>

Enregistrez un fichier PHP avec les fonctions, puis envoyez-les à l'index de votre page p>

exemple p>

index.php p> xxx p>Tools.php (il peut être n'importe quel nom, notez qu'il est conservé dans un dossier Outils boiteux) P>

<?php
if(isset($_POST['enable'])) { 
echo "Enable";
} else {
}

if(isset($_POST['disable'])) { 
echo "Disable";
} else {
}
?>


0 commentaires

1
votes

Retourner et imprimer le contenu d'une autre page de la page en cours.

index.php xxx

test.php xxx

résultat:

résultat: <> <> / p>


0 commentaires