我很困惑,因为我有两个函数,一个使用ajax获取数据,另一个使用字符串获取数据。
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));
});
}
我创建了文件shoulders.json
,将单引号str
之间的'
粘贴到文件中。如果我致电loadMenuX
,则会正确填写<select></select>
。如果我拨打loadMenu
,则不会填写任何内容。
我尝试了JSON.parse
而不是上述内容并获得相同的行为。
我无法使用$("#dropDownDest")
并且必须使用$(document).find
。为什么?
点击DOM每个循环似乎过多。什么是一个更好的方法来做一个工作得更好的ajax版本?
答案 0 :(得分:2)
什么是更好的方法来做一个工作得更好的ajax版本?
因为您尝试获取JSON文件更好的方法是使用 jQuery.getJSON() ,所以您将确保返回的结果是json格式:
$.getJSON( "./shoulders.json", function( json ) {
$.each(json, function( key, value) {
$("#dropDownDest").append('<option value="+value.id+">'+value.name+'</option>');
});
});
希望这有帮助。