2010-12-12 53 views
1

Dans le passé, j'ai toujours utilisé la fonction de rappel dans la fonction getJson pour gérer les données récupérées, mais comme je veux enregistrer les données récupérées en tant que variable, pour éviter qu'elles soient récupérées, j'ai couru vers quelques problèmes étranges. En essayant le code suivant, je commence à avoir cette erreur dans firebug; Est-ce que je fais mal en essayant de le faire sans la fonction de rappel?jQuery: Chargement de l'URL ajax comme variable?

function fetch(){ 
    var returndata = $.getJSON('http://localhost/api/get/1'); 

    formatDataset(returndata); 
} 

function formatDataset(data){ 
    var row = ''; 

    $.each(data, function(){ 
     row += this.name + '<br>'; 
    }); 

    $('#myDiv').html(row); 
} 
+0

pas de crédit pour moi, je l'ai suggéré le droit de fixer, juste une blague. – kobe

Répondre

0

Ouais, vous avez raison dans votre question où vous posez des questions sur le rappel. La fonction $ .getJSON renvoie le XMLHttpRequest pas les données. Donc, essayez quelque chose comme:

var returndata; 
function fetch(){ 
    if (!returndata) { 
     $.getJSON('http://localhost/api/get/1', function(data) { 
      returndata = data; 
      formatDataset(returndata); 
     }); 
     return; 
    } 
    formatDataset(returndata); 
} 
+0

Malheureusement pas - à la fois "client" et "source json" sont sur mon localhost ... – Industrial

+0

Désolé, mis à jour et supprimé ma première mauvaise réponse. – jammus

1

cela est faux dans votre code

var returndata = $.getJSON('http://localhost/api/get/1'); 

ajax est appel asyncronous, il commencera le processus et se passe, vous ne pouvez pas l'utiliser comme un type de retour.

si vous voulez faire avancer les choses, écrire le code dans le gestionnaire de succcess OOF getJSON