1

私のコードは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++)
4

1 に答える 1

1

ajax 呼び出しは非同期であるため、ソース変数がまだ初期化されていない可能性があります。入れてみて

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

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

成功関数で。

于 2012-10-25T08:51:57.270 に答える