2009-08-02 5 views
36

J'ai un simple formulaire de saisie de texte qui, lorsqu'il est soumis, doit aller chercher un fichier php (en passant les entrées dans le fichier), puis prendre le résultat (juste une ligne de texte) et placez-le dans un div pour afficher le div.jquery soumettre formulaire, puis montrer les résultats dans un div existant

Voici ce que j'ai maintenant:

<form id=create method=POST action=create.php> 
<input type=text name=url> 
<input type="submit" value="Create" /> 

<div id=created></div> 

Ce que je dois est le résultat de create.php?url=INPUT, à dynamiquement chargé dans le div appelé created. J'ai le script jquery, mais je n'ai pas réussi à le faire fonctionner correctement. Mais j'ai la bibliothèque chargée (le fichier).

Répondre

68

Ce code devrait le faire. Vous n'avez pas besoin du plug-in Form pour quelque chose d'aussi simple que cela:

$('#create').submit(function() { // catch the form's submit event 
    $.ajax({ // create an AJAX call... 
     data: $(this).serialize(), // get the form data 
     type: $(this).attr('method'), // GET or POST 
     url: $(this).attr('action'), // the file to call 
     success: function(response) { // on success.. 
      $('#created').html(response); // update the DIV 
     } 
    }); 
    return false; // cancel original event to prevent form submitting 
}); 
+2

Et puisqu'il veut: create.php? Url = INPUT - il devrait mettre la méthode de forme à "GET" – sirrocco

+0

Je pense que c'était juste lui décrivant les données qui devraient être envoyées. La méthode du formulaire dit POST, donc je suppose qu'il veut ça. –

+1

** Dieu aime !!! ** Exactement ce que je cherchais. Pour une question si simple que les utilisateurs voient sur un certain nombre de sites chaque jour, il y a très peu de documentation/exemples sur le web. – Sevenearths

2

Vous devez utiliser AJAX pour publier le formulaire si vous ne souhaitez pas que la page soit actualisée.

$('#create').submit(function() { 
    $.post('create.php', $('#create').serialize(), function (data, textStatus) { 
     $('#created').append(data); 
    }); 
    return false; 
}); 
+0

Attraper cliquez sur l'événement d'un bouton Soumettre est pas l'événement propre à prendre une forme soumission. vous voulez capturer l'événement de soumission du formulaire. –

+0

Vous avez raison bien sûr. Mise à jour mon code. – RaYell

+0

J'ai essayé, mais cela m'amène à la page create.php quand je clique sur submit. – mrpatg

4

Cela fonctionne également pour le fichier télécharger

$(document).on("submit", "form", function(event) 
{ 
    event.preventDefault(); 

    var url=$(this).attr("action"); 
    $.ajax({ 
     url: url, 
     type: 'POST', 
     dataType: "JSON", 
     data: new FormData(this), 
     processData: false, 
     contentType: false, 
     success: function (data, status) 
     { 
      $('#created').html(data); //content loads here 

     }, 
     error: function (xhr, desc, err) 
     { 
      console.log("error"); 

     } 
    });   

}); 
Questions connexes