2013-01-19 3 views
0

J'ai besoin d'ajuster le code suivant pour faire plusieurs demandes pour 3 pages distinctes (ajustement & page = 1, & page = 2, & page = 3), autre que de le répéter 3 fois comment puis-je combiner ce?Jquery JSON demandes multiples

$.getJSON("http://www.behance.net/v2/users/" + user + "/projects?api_key=" + api + "&callback=?&page=1", function (data) { 
    var project_str = ""; 
    for (i = 0; i < data.projects.length; i++) { 
     obj = {}; 
     obj = data.projects[i]; 
     project_str += '<a class="link" href="#' + obj.id + '"><img src="' + obj.covers['404'] + '" /></a>'; 
    } 
    $('#behance_container div').append(project_str); 
}); 
+0

semble stupide d'exposer votre clé api ... serait plus judicieux de le stocker sur votre serveur, envoyer des pages serveur voulu et l'ont faire toutes les demandes et de retourner une réponse JSON pour toutes les pages – charlietfl

Répondre

0

Quelque chose comme:

for(var i=1;i<=3;i++) 
{ 
    $.getJSON("http://www.behance.net/v2/users/" + user + "/projects?api_key=" + api + "&callback=?&page=" + i, function (data) { 
     var project_str = ""; 
     for (i = 0; i < data.projects.length; i++) { 
      obj = {}; 
      obj = data.projects[i]; 
      project_str += '<a class="link" href="#' + obj.id + '"><img src="' + obj.covers['404'] + '" /></a>'; 
     } 
     $('#behance_container div').append(project_str); 
    }); 
} 
0
$.each([1,2,3], function(i, numb) { 
    $.getJSON("http://www.behance.net/v2/users/"+user+"/projects?api_key="+api+"&callback=?&page="+numb, function (data) { 
     var project_str = ""; 
     $.each(data.projects, function(i, obj) { 
      project_str += '<a class="link" href="#' + obj.id + '"><img src="' + obj.covers['404'] + '" /></a>'; 
     }); 
     $('#behance_container div').append(project_str); 
    }); 
}); 
0

Parce que l'appel $.getJSON est async, vous pouvez collecter toutes les données avant de le montrer à l'utilisateur. Sinon, vous obtiendrez un petit "flash" chaque fois que les données sont récupérées/ajoutées au DOM. Ce qui suit n'est pas testé, mais devrait fonctionner (sinon, j'espère que vous avez aidé dans la bonne direction).

var nrOfPages = 3, 
    projects = []; 

for(var i = 1; i <= nrOfPages; i++) { 
    retrieveData(i); 
} 

// Retrieve the data by the pageNr 
function retrieveData(pageNr) { 
    $.getJSON("http://www.behance.net/v2/users/" + user + "/projects?api_key=" + api + "&callback=?&page=" + pageNr, function (data) { 
     for (i = 0; i < data.projects.length; i++) { 
      projects.push(data.projects[i]); 
     }; 

     if(pageNr == nrOfPages) { // Check if all the pages are retrieved 
      processData(); 
     } 
    }); 
}; 

// Process the retrieved data 
function processData() { 
    var project_str = ""; 
    for (i = 0; i < data.projects.length; i++) { 
     obj = {}; 
     obj = data.projects[i]; 
     project_str += '<a class="link" href="#' + obj.id + '"><img src="' + obj.covers['404'] + '" /></a>'; 
    } 
    $('#behance_container div').append(project_str); 
};