JQuery:解析ajax调用与嵌入式str

时间:2016-02-27 20:51:52

标签: javascript jquery json ajax

我很困惑,因为我有两个函数,一个使用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,则不会填写任何内容。

  1. 我尝试了JSON.parse而不是上述内容并获得相同的行为。

  2. 我无法使用$("#dropDownDest")并且必须使用$(document).find。为什么?

  3. 点击DOM每个循环似乎过多。什么是一个更好的方法来做一个工作得更好的ajax版本?

1 个答案:

答案 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>');
    });
});

希望这有帮助。