0

我有两个form标签。第二个通过发出 Ajax 请求,根据第一个中的选择预先填充选项。

form如果我将一些返回数据的示例传递给局部变量(请参见注释行),则数据将完美返回并且实际上预先填充了第二个。

任何建议都将不胜感激,因为我对 JavaScript 非常陌生,并且可能遗漏了一些明显的东西!我正在使用以下代码:

$(document).ready(function() {
    $('#table').change(function() {
        $.getJSON("/ajax_get", {
            id : $(this).val(),
            ajax : 'true'
        }, function(data) {
            /*
            var data = [
                { 
                    "optionValue":"actor_id", 
                    "optionDisplay": "actor_id"
                },
                {
                    "optionValue":"film_id", 
                    "optionDisplay": "film_id"
                },
                {
                    "optionValue":"priority", 
                    "optionDisplay": "priority"
                }
            ];
            */
            var $persons = $('#fields').empty();
            $.each(data, function() {
                $persons.append("<option value=" + this.optionValue + ">" + this.optionDisplay + "</option>");
            });
        });
    });
});
4

2 回答 2

0

您正在使用 jQuery,因此this需要$(this)

$.each(data, function() {
    $persons.append("<option value=" + $(this).optionValue + ">" + $(this).optionDisplay + "</option>");
});
于 2012-08-02T19:54:32.490 回答
0

在绝对确定 JSON 语法方面,我没有学到任何有价值的教训。它最终成为返回数据中的一个额外逗号(由我在循环中操作数据的方式引起),使其成为无效的 JSON 响应。JQuery表单选项的循环和位置很好,但无效的 JSON 数据导致脚本静默失败。感谢那些提供建议的人。干杯。

于 2012-08-03T07:43:48.763 回答