2010-08-08 5 views
0

Je ne comprends absolument pas cela, donc je vais demander. C'est pour un exercice que j'utilise pour essayer d'apprendre JSON et jQuery ensemble. Je suis assez sûr que mon code fait tout ce qu'il est censé faire, mais je n'arrive pas à comprendre comment a) lire le JSON qui est retourné et b) être capable d'utiliser le résultat après (que je suis deviner sera résolu avec a). Ainsi, le code de la page principale ASP (Classic) est:jQuery JSON retournant [Objet objet]

function validate_email_exists() { 
var email = new String($('#txt_email').val()); 
var sender = "[email protected]"; 
var validatorURL = "email_validator.asp?email=" + email + "&sender="+ sender; 
var obj = jQuery.parseJSON('{"isValid":true}'); 
$.getJSON(validatorURL); 

}

Et la page qui est appelée renvoie ce exactement:

{"isValid":true} 

J'ai donc vérifié et C'est un JSON valide, mais je n'arrive pas à comprendre à partir des didacticiels que j'ai trouvés, mais comment faire face à ce qui revient. Tout ce que je veux faire est d'envoyer la variable "validatorURL" à la page "email_validator.asp" et de me dire si elle est valide (isValid = true) ou non (isValid = false) et de mettre cette réponse dans une variable que je peux puis utilisez sur la page. Cela me rend fou, donc toute aide serait super, même en me montrant un exemple (le jQuery est au-delà de moi pour une raison quelconque).

+0

En plus d'avoir à utiliser une fonction de rappel dans 'getJSON', telle que publiée par Matthew, vous devez également perdre la' nouvelle chaîne() ':' val() 'retourne déjà une chaîne, et' nouveau String() 'fait quelque chose que vous ne voulez jamais dans JS. De même, lors de la création d'URL, vous devez utiliser 'encoderURLComponent()' sur les valeurs insérées en tant que composants de requête ou de chemin, comme les variables 'email' et' sender'. – bobince

Répondre

3
function validate_email_exists() { 
    var email = new String($('#txt_email').val()); 
    var sender = "[email protected]"; 
    var validatorURL = "email_validator.asp?email=" + email + "&sender="+ sender; 
    $.getJSON(validatorURL, function(response) { 
     if(response.isValid) {/* it's valid! */} else {/* not valid */} 
    }); 
} 
+1

Vous devriez probablement ajouter que (car c'est asynchrone) vous ne pouvez pas définir une variable dans le if/else alors essayez de le renvoyer de 'validate_email_exists'. Pour cette raison, il peut être utile de passer un rappel à 'validate_email_exists'. Le callback 'getJSON' l'appelle alors, passant dans' response.isValid'. –

+0

Wow, c'était rapide. Merci beaucoup. – stephmoreland

+0

Maintenant que je vois cela, c'est logique. Je ne pouvais pas comprendre que je devais nommer la valeur de retour et puis je pourrais l'utiliser. Cela fonctionne parfaitement, merci mattbasta! – stephmoreland