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.
j'ai essayé
JSON.parse
au lieu de ce qui précède et obtenez le même comportement.J'étais incapable d'utiliser
$("#dropDownDest")
et a dû utiliser$(document).find
. Pourquoi?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 № 1Quelle 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.