ajax获取null值

时间:2012-10-25 08:16:18

标签: javascript jquery ajax

我的代码可以在Chrome控制台中获取数据

但无法在我的程序中获取数据

像这样的代码:

$(document).ready(function () {
    var theme = '';
    var source = [];
    var rsps = '';

    $.ajax({
        url: '@Url.Content("~/Home/RoleMenus")',
            type: "GET",
            cache: false,
            success: function(response, status, xhr) {
                rsps = response;
                source = eval(response);
            },
            error: function(XMLHttpRequest,textStattus,errorThrown) {
                $('#jqxErrorMsg').html(errorThrown);
            }
        });

        for(var src in source) {
            if (src.items.legth > 0) {
                src.expanded = true;
            }
        }

        // Create jqxTree
        $('#jqxTree').jqxTree({ source: source, theme: theme});
        $('#jqxTree').bind('select', function (event) {
                var args = event.args;
                var item = $('#jqxTree').jqxTree('getItem', args.element);

                for (var menu in source[0]) {
                    if (item.label == menu.label) {
                        window.location = menu.actionUrl;
                        //break;
                    }
        }
            });
    });

=====更新===== 如果我搬家,反应是对的

 // Create jqxTree
 $('#jqxTree').jqxTree({ source: source, theme: theme});

进入success: function(response, status, xhr) {}

菜单显示正确

source变量在

之外仍然没有值

=====解决====

 for (var menu in source[0]) 

应该是

for (int i=0;i<source[0].length;i++)

1 个答案:

答案 0 :(得分:1)

ajax调用是异步的,因此源变量可能尚未初始化。试试

        for(var src in source) {
            if (src.items.legth > 0) {
                src.expanded = true;
            }
        }

        // Create jqxTree
        $('#jqxTree').jqxTree({ source: source, theme: theme});

在succes函数中。