2017-09-30 1 views
1

De this earlier thread Je pensais que j'ai appris que les données de formulaire pourraient être envoyées par la méthode POST en utilisant la commande javascript submit(). Mais je ne peux pas le faire fonctionner. Cette démo n'a pas de sens évident en ce qui concerne le but mais supporte avec moi. Je voulais juste tester cette commande spécifique qui ne semble pas fonctionner pour moi. Pouvez-vous m'aider s'il vous plaît? En cliquant sur le bouton Soumettre régulier, vous envoyez les données de la publication, mais vous n'activez pas le javascript via le lien.
javascript submit() commande ne pas envoyer mes données de poste

<html><body> 

<?php 
$self = $_SERVER['PHP_SELF']; 
$posttext = file_get_contents('php://input'); 
echo "Received input: ".chr(34).$posttext.chr(34)."<br><br>"; 
echo "<form id='test' action='{$self}' method='post'>"; 
?> 
Please fill in the fields with any text:<br><br> 
foo: <input type="text" name="foofield"><br><br> 
bar: <input type="text" name="barfield"><br><br> 
<input type="submit" value="Submit button works"><br><br> 
<a href="" id="submitlink">Submitting by JS not working – why?</a> 
</form> 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
<script> 
jQuery(function($) { 
$(document).ready(function(){ 
$("a#submitlink").click(function(){ 
alert("Yes, the link has been clicked. It is not that."); 
$("form#test").submit(); 
}); 
}); 
}); 
</script> 
</body></html> 

Répondre

3

Vous devez: event.preventDefault(); le comportement par défaut du <a>. Le problème est que si vous ne faites pas cela, la page se recharge parce que c'est ce que fait la balise <a>. Ainsi, même si vous soumettez les données, vous actualisez également la page où les données soumises sont perdues.

$("a#submitlink").click(function(event){ 
    event.preventDefault(); 
    $("form#test").submit(); 
}); 

L'autre solution consiste à ajouter # dans le href de la balise <a> comme:

<a href="#" id="submitlink">Submitting by JS not working – why?</a> 

cela empêchera aussi la balise <a> de faire un rafraîchissement.

+1

Oui cela a fonctionné. Merci beaucoup. Comme tous mes efforts étaient centrés sur la commande submit() et sa syntaxe qui n'était pas du tout le problème ici. – danbae