2010-05-10 3 views
2

Je fichier Ajax dans lequel le code a écrit à accepter l'utilisateur sous forme de valeurs et ces valeurs sont prises en fonction Ajax comme suit:Comment revenir valeur à l'aide ajax

$(document).ready(function(){ 
      $("#newsletterform").validate(); 
      $('#Submit').click(function(){ 
       var name = $('#newsletter_name').val(); 
       var email = $('#newsletter_email').val(); 
       sendValue(email,name); 
      }); 
      });

La fonction des valeurs qui passe et obtenir valeurs d'un autre fichier:

function sendValue(str,name){ 
       $.post( 
       "newsletter/subscribe.php", //Ajax file 
       { sendValue: str, 
        sendVal: name 
       }, 
       function(data2){ 
        $('#display').html(data2.returnValue); 
       }, 

    //How you want the data formated when it is returned from the server. 
       "json" 
       ); 
      }

et ces valeurs sont transmises à un autre fichier appelé « subscribe.php » dans lequel le code d'insertion à la base de données est écrit et je retourne à nouveau la valeur à ma première fonction ajax comme suit:

echo json_encode(array("returnValue"=>$msg)); 
The msg is ging to contain my message to be displayed.

Mais maintenant, cela fonctionne très bien sur localhost, je reçois le message des valeurs de retour nad correctement, mais quand je le télécharger sur le serveur cela me donne une erreur:

data2 is null 
[Break on this error] $('#display').html(data2.returnValue);

Cela ne donne qu'une erreur pour la valeur de retour mais l'insertion, l'envoi de la fonctionnalité de messagerie fonctionne très bien.
Veuillez me fournir une bonne solution dans laquelle je peux être en mesure de récupérer les valeurs de retour sans aucune erreur.
Merci d'avance.

+1

Comme il s'agit de votre ** 9e ** question, veuillez prendre la responsabilité de formater correctement votre propre code. Cliquez sur le petit orange [?] Sur la page Poser une question, qui vous amène ici: http://stackoverflow.com/editing-help, pour plus de détails. –

Répondre

-2

utilisation que:

var response = $.ajax({ 
    type : "POST", 
    url : "newsletter/subscribe.php", 
    dataType : "json", 
    async : false, 
    data : "sendValue="+str+"&sendVal="+name 
}).responseText; 
+1

Pourquoi devrait-il faire cela? Passer les arguments en tant que chaîne nécessite de les encoder manuellement (ou les choses se casseront si 'str' contient le caractère '&'). En outre, l'utilisation d'appels synchrones n'est pas vraiment bonne car elle bloque la page (iirc elle même utilisée pour bloquer l'ensemble du navigateur). – ThiefMaster

+0

Il veut obtenir responseText. Oui, il y a plusieurs façons de le faire. – sundowatch

+0

N'utilisez jamais async: false si vous n'en avez pas vraiment vraiment besoin. – bestprogrammerintheworld

1

Si elle fonctionne sur votre site de développement, je soupçonne que l'erreur dans votre script PHP. Votre hôte peut exécuter une ancienne version php qui n'a pas json_encode(). Appelez simplement le script manuellement pour vérifier sa sortie. Si elle a besoin POST, vous pouvez écrire un formulaire ou vérifier le résultat de l'appel ajax avec FireBug

0

Sans autre explication pourquoi cela se produit, essayez ceci:

$(document).ready(function(){ 
     $("#newsletterform").validate(); 
     $('#Submit').click(function(e){ // added the e paramenter 
      var name = $('#newsletter_name').val(); 
      var email = $('#newsletter_email').val(); 
      sendValue(email,name); 
      e.stop(); // dont submit the form normaly 
     }); 
}); 
0

Si vous avez Firebug, écrivez données2 à sa console et voir ce qu'il est:

function(data2) { 
    console.log(data2); 
    $('#display').html(data2.returnValue); 
} 

en outre, vous pouvez utiliser le panneau net firebug pour voir votre fichier php réponse brute (si elle a l'erreur - vous le verrez là-bas).

Questions connexes