javascript - JQuery:解析 ajax 调用与嵌入的 str

标签 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 版本?

最佳答案

What would be a better way to do the ajax version THAT WOULD WORK and be better?

因为您正在尝试获取 JSON 文件,所以更好的方法是使用 jQuery.getJSON() ,这样你就可以确定返回的结果是json格式的:

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

希望这对您有所帮助。

关于javascript - JQuery:解析 ajax 调用与嵌入的 str,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35675303/

相关文章:

jquery - 跟踪 jQuery css 更改的位置

javascript - 在 jQuery 自定义函数中使用事件

javascript - 如何判断字符串是否是 'correctly' 编码为 Base64 的?

javascript - 如何在我的 Javascript 中找到内存泄漏?

javascript - 显示对象值

jquery - Google Buzz API通过JQuery返回Null吗?

javascript - 使用 Ajax 在同一个 PHP 文件 (JSON) 中进行 POST 和 GET

javascript - 8皇后问题。这段 JavaScript 代码如何工作?

Jquery 验证不适用于 ckeditor

json - 如何使用 YAML 为 Swagger-API 插入 JSON 代码块?