J’envoie plusieurs requêtes getJSON. Après chaque requête, je construis un panneau et initialise une grid hiérarchique tierce avec les données. Le problème que je rencontre est que les panneaux ne sont pas créés dans l’ordre d’envoi des demandes mais dans leur ordre de retour. Je pense que je me suis plongé dans un tout mais je ne veux vraiment pas avoir à retravailler ça si je ne le suis pas.
var _grids = { ServiceGrid: { id: 0, parentUrl: _SERVICE_CONTENT_URL, childUrl: _SERVICE_HISTORY_URL, parentElementName: "ServiceTypeName", childElementName: "ServiceLogEnsortinges", childPrimaryKey: "LogID", tableName: "Service", data: [], parentColumns: [...], childColumns: [...] }, ServiceItemGrid: { id: 1, parentUrl: _SERVICE_ITEM_CONTENT_URL, childUrl: _SERVICE_ITEM_HISTORY_URL, parentElementName: "PackageServiceItemName", childElementName: "ServiceItemLogEnsortinges", childPrimaryKey: "LogID", tableName: "Service Item", data: [], parentColumns: [...], childColumns: [...] } }; function prepareDataForGrid(_grids, id) { var tableIdIncrementor = 0; var $panelGroup = $("").addClass("panel-group"); // Append Accordion $panelGroup.attr("id", "accordion"); $panelGroup.appendTo("#placeholder"); $.each(_grids, function(index, grid) { var parentUrl = grid.parentUrl, childUrl = grid.childUrl, //Request data parentData = getApiDataAjax(parentUrl, id), childData = getApiDataAjax(childUrl, id); $.when(parentData, childData).done(function (parentDataResult, childDataResult) { //Combine child to parent combineElements(parentDataResult[0], childDataResult[0], grid); // Hydrate grid.data with combined data grid.data = parentDataResult[0]; //loop through grids, build panels for each parent $.each(grid.data.result, function(index, value) { appendhtml(grid, value, tableIdIncrementor); //Create hierarchical grid $("#" + tableIdIncrementor).igHierarchicalGrid({ initialDataBindDepth: 1, dataSource: JSON.ssortingngify(value), dataSourceType: "json", responseDataKey: "result", autoGenerateColumns: false, primaryKey: "ID", columns: grid.parentColumns, autoGenerateLayouts: false, defaultChildrenDataProperty: value[grid.childElementName], columnLayouts: [ { key: grid.childElementName, autoGenerateColumns: false, primaryKey: value.childPrimaryKey, columns: grid.childColumns } ] }); tableIdIncrementor++; }); }); }); }
Je pourrais éventuellement faire tous les panneaux en premier et attacher les grids aux panneaux via les identifiants, mais ce serait tellement plus simple si je pouvais append des panneaux et des grids dans l’ordre dans lequel les demandes étaient envoyées.
Merci.
- Comment savoir quand une collection de requêtes getJSON () est terminée?
- Comment modifiez-vous les données renvoyées par un appel AJAX avant leur affichage dans jqGrid?
- passer une variable dans un fichier php en utilisant ajax ne fonctionne pas
- Le script JQuery-Ajax ne fonctionne pas dans le deuxième clic, mais dans FF et Chrome au deuxième clic
- les liens fancybox ne fonctionnent pas dans le contenu ajax
- php json_encode ne produit pas d’object réel / make array chaîne en object réel / tourne php tableau en json
- Renvoyer la réponse de PHP à Jquery en utilisant Ajax
- module d’envoi de fichier jquery envoi de paramètre supplémentaire
- Erreur de publication ASP.NET MVC jQuery
- Pagination Ajax accessible et compatible 508
Une solution simple serait de créer et d’append une div à la div cible pendant que vous bouclerez, puis d’insérer des données dans chaque div lorsque les données arriveront.
$.each(function () { var $thisDiv = $("").appendTo("#targetDiv"); $.when(doThis,doThat).done(function (result1, result2) { $thisDiv.append(result1).append(result2); }); });
Cependant, je préférerais construire la structure html à l’avance et l’insérer en même temps, simplement parce que je préfère toucher le moins possible à la dom.
- Ajax FAQ chargement en utilisant jquery?
- jQuery AJAX Demande à HTTPS d’être servi à HTTP avec Laravel et Select2
- Appeler d’autres plugins au sein d’un plugin jQuery
- Formulaire non soumis lors de l’utilisation de submitHandler de jQuery
- Calculs en temps réel?
- Chaîne d’parsing de AJAX Success à exécuter en tant que JQuery
- Je veux aller chercher toute la valeur atrribute de l’enfant
- Pourquoi JQuery Image Uploader n’envoie pas d’image
- CakePHP ne fonctionnera pas avec Ajax jQuery
- formulaire avec soumission de données et d’images à l’aide de phonegap