无法使用JSON响应填充组合框

时间:2015-04-07 14:20:47

标签: json jquery-mobile

我第一次使用JQuery mobile。我想从JSON结果中填充一个组合框。这是组合框的标记:

<select name="comboChapters" id="comboChapters" data-native-menu="false">
</select>

JSON响应是这样的:

[{"chapterId":1,"chapterName":"First"},{"chapterId":2,"chapterName":"Second"}]

这是我写的JavaScript函数:

$(document).on('pagecreate', '#mainPage', function () {
    var condition = navigator.onLine ? "ONLINE" : "OFFLINE";
    if (condition === 'ONLINE') {
        var options = '';

        $.ajax({
            url: '/GetChaptersList',
            type: 'GET',
            success: function (data) {//populate the combobox
                for (var i = 0; i < data.length; i++) {
                    options += '<option value="' +
  data[i].chapterId + '">' +
  data[i].chapterName + '</option>';
                }
                $("#comboChapters").html(options);
            },
        });
    }
    else
        alert('Please connect to the internet.');
});

上述代码不起作用。我甚至尝试过以下代码:

$(data).each(function() {
  var option = $('<option />');
     option.attr('value', this.chapterId ).text(this.chapterName );
     $('#comboChapters').append(option);
});

有人可以指出它是如何完成的吗?我也需要复选框列表的相同功能。

1 个答案:

答案 0 :(得分:0)

填充组合框似乎有效。检查一下:

<select name="comboChapters" id="comboChapters" data-native-menu="false">

var data = [{"chapterId":1,"chapterName":"First"},{"chapterId":2,"chapterName":"Second"}];

$(data).each(function() {
  var option = $('<option />');
     option.attr('value', this.chapterId ).text(this.chapterName );
     $('#comboChapters').append(option);
});

http://jsfiddle.net/qsafmw5g/

您确定您的请求是否正确获取了数据?是&#34; / GetChaptersList&#34;正确的网址?

编辑: 要使它与jquery mobile一起使用,您需要在填充选项的代码之后添加它:

$('#comboChapters').selectmenu('refresh', true);

编辑过jsfiddle:http://jsfiddle.net/qsafmw5g/1/