1

我正在使用 Javascript 将部分视图动态加载到 DIV 中:

    $.ajax({
        url: '@Url.Action("Details","User")',
        data: { id: userId},
        type: 'post',
        success: function (data) {
        $("#user-details").show().html(data);})

显示时,我想填充一些下拉菜单供用户进行选择。假设我想填充“UserCategories”列表

因此,在上面的 ajax 调用成功时,我会这样做:

                $.getJSON('@Url.Action("GetUserCategories","User")',function(data) {
                $.each(data, function (key, item) {

                    $("#userCategories-list").append(
                        $("<option></option>").text(item.Name).val(item.Id)
                    );
                });
            });

未填充 UserCategories 列表。

我认为这是因为包含 UserCategories 下拉菜单的 UserDetails 源 html 是动态呈现的并且未显示在页面上?

如何访问和填充通过 ajax 调用显示的“userCategories-list”下拉菜单以及查看页面源/Firebug 时看不到哪个 HTML/控件名称?

先感谢您。

4

1 回答 1

0

不能肯定地说,但我的猜测是,当你的列表创建函数被调用时,你的局部视图不是浏览器 DOM 的一部分。事实上,我没有看到任何将您的部分加载到浏览器中进行渲染的代码。

您是否尝试过使用 firebug 或chrome 调试器进行调试?您可以在函数中设置断点并查看实际发生的情况。

 $.ajax({
        url: '@Url.Action("Details","User")',
        data: { id: userId},
        type: 'post',
        success: function (data) { 
            $("#partialContainer").html(data);
            $.getJSON('@Url.Action("GetUserCategories","User")',function(listData) {
                $.each(listData, function (key, item) {
                    $("#userCategories-list").append(
                        $("<option></option>").text(item.Name).val(item.Id)
                    );
                }); //each
            )); //getJson
        } //success anon function
  }); //$.ajax
于 2012-05-16T21:52:55.397 回答