2014-05-19 4 views
-1

Ceci est si basique, mais je passais parfois maintenant et ne pouvais pas le comprendre. J'essaie de créer un formulaire avec une entrée cachée et de l'envoyer à la page "test.php" en utilisant jQuery. Cependant, je ne peux pas accéder à ce formulaire quand, donc je ne suis pas sûr où est le problème !!créer et soumettre le formulaire dynamiquement en utilisant javascript

Ceci est jQuery pour créer et soumettre le formulaire:

$('#submitForm').on('click', function(e){ 
    e.preventDefault(); 

    //Create a Form 
    var f = document.createElement("form"); 
    f.setAttribute('id','queryForm'); 
    f.setAttribute('name','queryForm'); 
    f.setAttribute('method',"post"); 
    f.setAttribute('action',"test.php"); 

    var i = document.createElement("input"); 
    i.setAttribute("type", "hidden"); 
    i.setAttribute('name',"query"); 
    i.setAttribute('id',"queryId"); 
    i.setAttribute("value", "success"); 

    f.appendChild(i); 
    document.body.appendChild(f); 

    //Send the Form 
    f.submit(); 
}); 

Dans "test.php" Je le soufflet de code. J'ai essayé d'imprimer la longueur du formulaire pour m'assurer que j'ai envoyé le formulaire correctement mais je reçois 0 !!

<body> 
<script> 
    var formlength = document.forms.length; 
    alert(formlength); // I get 0 
</script> 
</body> 

Merci d'avance!

+1

Le code devrait fonctionner comme prévu .. ce qui signifie que cela crée un formulaire et le soumet tout de suite à 'test.php'. Où essayez-vous de "vérifier" votre formulaire? Si vous essayez de le trouver dans "test.php", vous ne le ferez pas parce qu'il a transmis des données, pas le formulaire lui-même .. – rorofromfrance

+0

@rorofromfrance test.php n'a rien d'autre que le javascript ci-dessus où je vérifie la longueur du formulaire. Cela montre que, d'après moi, il n'y a pas de forme, n'est-ce pas? J'ai essayé getElementbyId ("queryId") et n'ai rien obtenu! – Anonymous

+0

où vérifiez-vous 'document.forms.length', vérifiez-le avant' f.submit() ', vous devriez obtenir' 1'. Vous ne pouvez pas accéder au formulaire une fois qu'il est soumis, car la page sera rechargée! – rps

Répondre

0

Le code jQuery est correct. Mettez cette ligne dans le fichier test.php pour le tester:

<?php echo $_POST['query']; ?> 

Il doit générer « succès » sur la page test.php

0

document.forms.length compte le nombre de <form> -tags pas les données soumises.

Depuis que vous utilisez PHP (mettez-le dans test.php).

<?php 

if(isset($_POST['query'])) { 
    echo htmlspecialchars($_POST['query']); 
} 

Jetez un coup d'oeil ici: http://jsfiddle.net/428GQ/1/. J'ai commenté le soumettre et changé le champ caché en un texte (juste pour s'assurer que cela fonctionne). Maintenant, ajoutez le code ci-dessus test.php et regardez-le fonctionner (bien sûr, vous devrez d'abord supprimer les commentaires).

+0

Je pense que j'ai besoin de $ (" sumbitForm ") parce que j'appelle cette fonction quand un bouton clique. Tout ce dont j'ai besoin est d'obtenir l'élément "query" dans test.php. Vous ne savez pas ce que je manque? – Anonymous

0

J'ai modifié votre code pour utiliser plus Jquery et que des conseils par [ Niclas Larsson] mis dans le pied de page .. s'il vous plaît vérifier

$ (fenêtre) .load (function() {

    //Create a Form 
        var f = document.createElement("form"); 
        $(f).attr('id','queryForm'); 
        $(f).attr('name','queryForm'); 
        $(f).attr('method',"post"); 
        $(f).attr('action',"test.php"); 


        var i = document.createElement("input"); 
        $(i).attr("type", "hidden"); 
        $(i).attr('name',"query"); 
        $(i).attr('id',"queryId"); 
        $(i).attr("value", "success"); 

        $(f).append(i); 
        $('body').append(f); 

        console.log(f); 

        //Send the Form 
        $(f).submit(); 

});

Questions connexes