JQuery getJSON用于在Android设备上点击仅显示第一个/默认值时附加下拉选项

时间:2014-02-04 09:30:32

标签: jquery json options

我试图在用户点击选择字段时使用getJSON动态地将选项附加到下拉菜单中(使用on('click')事件):

$.getJSON(url, function (data) {
        if (data) {

            caller.find('option').remove().end();

            var options = "";
            $.each(data, function (Index, Choice) {
                options += "<option value=" + Choice.Value + ">" + Choice.Text + "</option>";
            });
            caller.append(options);
        }
    });

数据检索成功,但选项不会立即显示在下拉列表中,因此用户无法看到它们。只显示第一个选项,这是默认选项(未通过ajax检索),因此用户需要单击它,然后关闭下拉菜单,如果再次单击,则显示所有值,以便他可以选择一个。

似乎是同步问题 - 在ajax调用完成之前显示值。在我的情况下,这意味着显示“请选择”,这是默认值,并且在HTML中是静态的。然后在后台检索json,但是当菜单显示选项时,它们不会在运行时填充。需要关闭菜单并重新选择。

这是Chrome和IE的问题(在FF上工作)=&gt;因此发生在Android设备和可能是Windows手机(没有测试过这个)。在每个动态下拉列表上单击两次真的很令人沮丧。

编辑: 将查询转换为ajax(设置async = false),但结果仍然相同:

$.ajax({
        type: 'GET',
        dataType: 'json',
        async: false,
        url: url,
        data: 'qid=' + questionID + '&qa=' + jsonQA,
        success: function (data) {
            if (data) {

                caller.find('option').remove().end();

                var options = "";
                $.each(data, function (Index, Choice) {
                    options += "<option value=" + Choice.Value + ">" + Choice.Text + "</option>";
                });
                caller.append(options);
            }
        },

        processData: false,
    });

0 个答案:

没有答案