2011-02-12 4 views
3

A posteriori mais je pense que j'étais un peu trop spécifique pour gagner beaucoup d'intérêt Original. Je suis nouveau à javascript et à AJAX et j'ai trouvé difficile de trouver une réponse simple à cette question. Mon but est de simplement analyser certains JSON distants, en me donnant un objet que je peux ensuite utiliser dans le reste de l'application. Le problème que j'ai est de garder cet objet en vie (obtenir des données en utilisant XMLHttpRequest il est seulement rempli pendant la fonction de rappel). J'ai jQuery disponible si cela facilite la réponse. Le javascript fait partie d'une extension google chrome et dispose des droits d'accès au JSON distant.Créer un objet à distance JSON

quelqu'un L'espoir peut aider

Modifier; Code de message original + la réponse de Scott M

var createdDate; 

function checkDomainRegistrationLength(url) { 
    var serverName = urlToServerName(url); 

    var xhr = new XMLHttpRequest(); 

    xhr.open("GET", "eg.json", false); //Code now working, was set to async 
    xhr.onreadystatechange = function() { 
    if (xhr.readyState == 4) { 
     var resp = JSON.parse(xhr.responseText); 
     createdDate = resp.WhoisRecord.audit.createdDate; 
    } 
    } 
    xhr.send(); 
    return createdDate; 
} 
+0

Montrez du code qui illustre le problème que vous rencontrez. –

+0

Avez-vous ajouté le code ci-dessus – nonamenonumber

+0

Combien de temps voulez-vous "garder le cap" et combien de temps pouvez-vous déjà? Jusqu'à la prochaine page recharger/cliquer sur un lien non-JS? Jusqu'à la fin de la session? – thejh

Répondre

0

affecter l'objet retourné à une variable globale. Vous pouvez alors y accéder tout au long de l'application. Edit: si vous avez jQuery disponible, cela vous facilite la vie infiniment plus facilement. Utilisez le $.ajax() function pour faire le travail pour vous. dans le rappel (qui n'est appelé qu'une seule fois!), vous pouvez ensuite définir la variable. Désolé pour ne pas voir la référence jquery plus tôt, ou je l'aurais inclus dans la réponse.

+0

Encore une fois, cela devrait fonctionner mais ne le fera tout simplement pas ... Longue session de débogage avant :( – nonamenonumber

+0

ouais si cela ne fonctionne pas alors vous pouvez avoir un problème ailleurs. Essayez d'utiliser Debug.print (message) (je pense que c'est la bonne appel) et affichage de la sortie dans firebug –

+0

Je l'ai exécuté dans le débogueur et je remarque que la fonction elle-même s'exécute plus d'une fois (attendue juste la fonction de changement d'état xhr pour être accédée plusieurs fois) et retourne finalement la chaîne correcte. renvoie une valeur nulle les premières fois où je vois le problème Toutes les idées pour lesquelles il peut être exécuté plus d'une fois (vérifiez les appels accidentels supplémentaires) – nonamenonumber

Questions connexes