/ / JQuery: analyse d'appel ajax et str intégré - javascript, jquery, json, ajax

JQuery: analyse d'appel ajax et str intégré - javascript, jquery, json, ajax

Je suis confus parce que j'ai deux fonctions, l'une utilisant ajax pour obtenir les données et l'autre, les extrayant d'une chaîne.

function loadMenuData() {
$.ajax({
url: "./shoulders.json",
success: function(data) {
dataObj = $.parseJSON(data);
$.each(dataObj, function( key, value) {
$(document).find("#dropDownDest").append($("<option></option>").val(value.id).html(value.name));
});
}
});
}
function loadMenuDataX() {
var str = "[{"id":"A","name":"Bart"},{"id":"B", "name":"Joe"},{"id":"C", "name":"Gomer"}]";
dataObj = $.parseJSON(str);
$.each(dataObj, function( key, value) {
$(document).find("#dropDownDest").append($("<option></option>").val(value.id).html(value.name));
});
}

J'ai créé le fichier shoulders.json acheter coller le str entre les guillemets simples " dans le fichier. Si j'appelle loadMenuX, il remplit le <select></select> correctement. Si j'appelle loadMenu, il ne remplit rien.

  1. j'ai essayé JSON.parse au lieu de ce qui précède et obtenez le même comportement.

  2. J'étais incapable d'utiliser $("#dropDownDest") et a dû utiliser $(document).find. Pourquoi?

  3. Frapper le DOM chaque boucle semble être excessif. Quelle serait une meilleure façon de faire la version ajax qui fonctionnerait et serait mieux?

Réponses:

2 pour la réponse № 1

Quelle serait une meilleure façon de faire la version ajax qui fonctionnerait et serait mieux?

Parce que vous essayez d’obtenir un fichier JSON, le meilleur moyen est d’utiliser jQuery.getJSON (), vous serez donc sûr que le résultat renvoyé est au format json:

$.getJSON( "./shoulders.json", function( json ) {
$.each(json, function( key, value) {
$("#dropDownDest").append("<option value="+value.id+">"+value.name+"</option>");
});
});

J'espère que cela t'aides.