2010-07-23 4 views
0

J'envoie un appel ajax à une autre page. Je veux obtenir une valeur d'une variable, appelons-la x, retour de cette page en cas de succès. Comment puis je faire ça. voici mon code ajaxjquery réponse retour

$.ajax({ 
     type: 'POST', 
     url: 'myotherpage.php', 
     data: 'loginname=' + loginname , 
     success: function(success) { 
      if(success == 1) { 

      //get the variable value here   
      } else { 

      //do nothing 

      } 
     } 
    }); 
+2

Cela dépend fortement de ce que myotherpage.php est censé renvoyer. – theycallmemorty

+0

En outre, la signature de la fonction 'success()' est 'fonction (data)', donc à moins que votre page renvoie uniquement '" 1 "' ou '" 0 "', l'approche de votre fonction est erronée. – Tomalak

Répondre

1

Votre autre page doit retourner JSON, qui contient une variable d'état (1 pour le succès, 0 pour FAIL), et la variable ou toutes les données dont vous avez besoin. Voici un exemple d'un fichier que j'ai ici. Cela ne fonctionnera pas bien sûr, mais devrait vous donner l'idée.

  Req = $.ajax({ 
       type: 'POST', 
       data: this.data.filter, 
       url: this.data.DataURL+"listids", 
       dataType: 'json', 
       timeout: 5000, 
       cache: false, 
       error: function(){ 
        UserNotify({class:'notify_alert', content:'Your request can\'t be completed at this time.<br />An external error has been encountered. Please wait a moment and try again.'}); 
       }, 
       success: function(o){ 
        if (0==o.status) { 
         if (undefined == o.user_msg) { o.user_msg = '';} 
         UserNotify({class:'notify_alert', content:'Your request can\'t be completed at this time.<br />'+o.user_msg}); 
        } else { 
         if (0 < o.data.ids.length) { 
          tli.data.update.ids = o.data.ids; 
         } 
        } 
       } 
      }); 
+0

Eli a raison. La partie de la fonction (succès) a les données que vous avez nommé "succès" dans le paramètre (ce qui est confus). Donc, le 'succès' est ce que vous devriez retourner à votre vue en tant que json habituellement, donc dans votre cas, vous renvoyez une variable à la vue et vous l'appelez succès. Donc, si vous voulez vérifier sa valeur, vous le ferez normalement. Mais si vous voulez vérifier si le succès a échoué et faire un peu d'erreur, il suffit d'écrire la partie erreur. Et utilisez le statut pour vérifier l'état des données. erreur: function() {... – EKet

+0

@Ehsan - Sorte de, mais pas tout à fait. La fonction d'erreur sera exécutée s'il y a une erreur ajax. Ceci est géré en interne par jQuery. S'il n'y a pas d'erreur ajax, la fonction de réussite sera exécutée avec toutes les données renvoyées comme une seule variable. Dans ce cas, c'est un tableau PHP passé par json_encode(). Je l'appelle juste o pour objet. C'est JSON, et peut être consulté par o.path.to.whatiwant. Dans mon cas, o.status indique si la méthode php a réussi, puis o.data.ids (une liste d'identifiants) est assignée là où j'en ai besoin – Eli

1

Je ne sais pas ce que vous essayez de faire, mais pour vous donner une idée,

if(success == 1) { 
// codes get executed here if myotherpage.php would display 1 
// so I'm wondering how would you create a variable there... 
// if you put anything other than just '1' in myotherpage.php, codes inside this "if" will not be excuted 

//get the variable value here   
} else { 

//do nothing 

} 

dans ce domaine,

success: function(data) {...} // "data" is the data being returned from the server 
1

écho la variable dans votre fichier php au lieu de "1" et l'avoir retourné nul quand quelque chose ne va pas.

$.ajax({ 
    type: 'POST', 
    url: 'myotherpage.php', 
    data: 'loginname=' + loginname , 
    success: function(success) { 
    if(success == '') { 
     // error alert 
     alert('Something went wrong. Reload the page and try again.'); 
    } else { 
     alert(success); // alert the value from what you printed out in myotherpage.php 
    } 
    } 
});