2010-12-06 5 views

Répondre

8

Vous effectuez une requête AJAX asynchrone.

msg ne contiendra la valeur qu'après que la demande a été faite.

Vous devez placer le code qui utilise msg dans le rappel success de la requête Ajax (le function(data)).

(. Il y a la possibilité théorique de faire la synchronisation à la demande en utilisant async: false mais qui ne sont pas bonnes pratiques et devrait être utilisée que si elle est inévitable)

+0

i whant pour être en mesure d'obtenir le msg d'erreur, puis lancez le javascript, comment puis-je faire cette? – dvdx

+0

@dvdx suffit de mettre le Javascript que vous voulez commencer dans le rappel de succès. –

+0

mais je veux obtenir les données d'abord et après une volonté d'accéder aux données dans une fonction que l'appel – dvdx

0

Je suis d'accord avec Pekka - vous devez considérer quelque chose comme ceci:

var = msg; 

$.get('json-signup-erros.php',{}, function(data, response) 
{ 
    if(response == "success") 
    { 
     msg = data; 
     alert(msg); 
    } 
    else 
    { 
     alert("Whoops something went wrong, please try again."); 
    } 
},'json'); 

function focushint() 
{ 
    alert (msg); // this works 
} 

$("input").focus(focushint); 

NB. J'ai mis un "succès" vérifier dans le $ .get ... Je vois ceci tout le temps - vous ne devriez pas supposer que votre demande d'Ajax Http va retourner une réponse 200! c'est-à-dire si aucune donnée n'est renvoyée en raison d'une erreur (404, 500, 401), vous ne pouvez pas l'alerter et vous pouvez avertir l'utilisateur que quelque chose s'est mal passé en ajoutant une clause else.

0
var = msg; 

$.get('json-signup-erros.php',{}, function(data, response) 
{ 
    if(response == "success") 
    { 
     msg = data; 
     alert(msg); 
    } 
    else 
    { 
     alert("Whoops something went wrong, please try again."); 
    } 
},'json'); 

function focushint() 
{ 
    alert (msg); // this works 
} 

$("input").focus(focushint); 
alert(msg); // this is still does not work 

Si vous souhaitez accéder à l'msg en dehors d'une fonction jQuery comme focushin qui sera dans le même champ

+1

Lisez ma réponse. ** Ce n'est pas une question de portée. ** Il s'agit d'une question de la demande qui n'est pas terminée au moment où vous faites l'alerte. –

Questions connexes