2011-07-25 3 views
0

C'est moi encore. Je suis tellement frustré par ce code que ce n'est même pas drôle. Ce n'est pas que je veuille le poster à nouveau. C'est juste que maintenant je comprends où le problème était dans le code et je voulais voir si vous pouviez m'aider à comprendre la dernière partie.Ajax Post PHP Div Rafraîchissant

Fondamentalement, j'essaie de rafraîchir un div sans recharger la page entière. Ça me tue. Voici quelques informations sur elle:

Voici mon fichier js premier Maintenant, le problème

$(function() { 

    $(".button").click(function() { 
    // validate and process form 
    // first hide any error messages 
     var email = $("input#email").val(); 
     //var dataString = '&email=' + email; commented out  
      var dataString = email; 
      //try insted this //alert (dataString);return false; 
       $.ajax({ type: "POST", dataType:'HTML', 
       //or the appropiate type of data you are getting back 
       url: "http://www.edshaer.com/EdinburgCISD/Gorena/Gorena.php", data: {email:dataString}, 

       //in the php file do $email = $_POST['email']; 



        //not a good practice but you can try with it and without it 
        success: function() { 


       $("#div").fadeOut($("#div").html()); 

        $("#div").fadeIn($("#div").html()); 
         $("#email").val(''); 

        // Change the content of the message element  

         // Fade the element back in 
         } }); 
          //ajax ends 
             return false; }); 
             //click ends 
              });//document ready ends 

que je suis en cours d'exécution dans ce code se trouve sur la partie Ajax. Après avoir placé l'alerte(), je relized que si j'utilise la fonction() comme ceci:

success: function(data) 

l'alerte est sorti vide. La raison derrière cela est que mon URL va à mon fichier php, mais mon div que j'essaie d'actualiser est sur mon fichier html. Signification si je fais ceci:

success: function(data) { 
       $("#div").html(data)} 

J'envoie des données vierges parce qu'il essaie d'obtenir le div de mon fichier php au lieu de mon fichier html.

Et si je fais ceci:

$("#div").html() 

Alors qui me donne la div qui est dans mon fichier html.

En sachant ce qui se passe maintenant, Pouvez-vous les gars s'il vous plaît aidez-moi ???

+0

votre question n'est pas claire pour moi. Quel est votre problème exact. Envoyez-vous seulement des données de votre fichier php ou du HTML? –

+0

Qu'est-ce qui se passe, c'est que ma requête est sur mon fichier php. Ma div est sur mon fichier html. Maintenant, le post fonctionne parfaitement parce que lorsque je rafraîchis la page entière, le message est affiché. mais ce que j'essaye de faire est de le rafraîchir quand le poste est fait. Quelque chose comme ce que vous avez ici. – JAG

+0

J'ai utilisé le alert() pour voir ce qui se passait avec ma div. ça sortait vide. quand funtion (données) {alerte ("données:" + données)} mais quand je l'ai fait: funtion() {alerte ("données:" + $ ("# div"). html())} alors mon div est venu sur l'alerte. – JAG

Répondre

0

Mon cher, vous devriez générer une sorte de html dans votre fichier php que vous voulez générer dans votre div. Ensuite, vous verrez que vous avez du contenu dans data dans la fonction de succès. C'est une approche facile. Mais il y a aussi une autre approche qui est plus efficace mais qui nécessite une recherche. Ceci est l'implémentation de Client Side Scripting. Vous pouvez le faire avec l'aide d'un plugin jquery jquote2. J'espère que cela fonctionnera pour vous.

+0

Merci ... Tellement ... – JAG

0

Vous utilisez

$("#div").fadeOut($("#div").html()); 
$("#div").fadeIn($("#div").html()); 

Les deux sont faux, jQuery et .fadeIn().fadeOut() arguments sont soit [durée] [rappel] ou [durée] [faciliter] [rappel]. Aucun ne prend le HTML en entrée.

Essayez de changer

$("#div").fadeOut($("#div").html()); 

à

$("#div").fadeOut(); 

et en le déplaçant en dehors du $.ajax appeler pour cacher la montré précédemment (le cas échéant) les résultats avant que le poste et aussi changer

$("#div").fadeIn($("#div").html()); 

à

$("#div").html(result).fadeIn(); 

changer aussi

success: function() 

à

success: function(result) 

J'espère que cela aide.

+0

Je voulais juste vous remercier tous pour votre aide ... Avec votre aide, je l'ai eu au travail ... Merci ... – JAG

+0

De rien, n'oubliez pas accepter une réponse. – Spyros

0

Cela peut être un problème lié à la réponse du script PHP. Jquery ne rend pas toujours correctement la réponse Ajax en tant que html.

Le paramètre dataType: html dans l'appel $.ajax({ ... }) peut vous aider. Définissant également header("Content-Type: text/html"); en haut de votre script php ajax.