var _menus;
 $.getJSON('/Ajax/_MenuJson', function (json) {//获取后台json
 alert(json);
 _menus = eval('(' + json + ')');
 //alert(_menus);
 }); $(function () {
 alert("_menus:" + _menus);
});帮我看下 为什么前面
"
$.getJSON('/Ajax/_MenuJson', function (json) {//获取后台json
 alert(json);
 _menus = eval('(' + json + ')');
 //alert(_menus);
 });"
还没执行完 就执行  
"
$(function () {
 alert("_menus:" + _menus);
});
"
这个了
最后返回的是_menus:undefined

解决方案 »

  1.   

    $.getJSON是有访问延迟的
    后面的代码不会等你ajax完成以后才执行,而是直接就顺序执行了
    所以你需要把你的代码放在success里
      

  2.   

    ajax一般是异步执行的, 如果要确保返回后执行,要把代码放到回调函数中执行。
      

  3.   

    这就是ajax异步的效果  $.getJSON 和 $(function () 相当于两个并发的线程在跑 
    你该把$(function()那段 放到回调函数里就没问题了
      

  4.   

    $.getJSON('/Ajax/_MenuJson', function (json) {//获取后台json
     alert(json);
     _menus = eval('(' + json + ')');
     //alert(_menus);
     });
    你后面写的function(json)就是回调函数
    话说你这句话不知道怎么用,你怎么写出来的
      

  5.   


    我开始是这么写来着:
    http://topic.csdn.net/u/20110715/22/69bc43bf-16ad-4450-be4a-5d34c81c5cad.html但是样式就不能正常加载了
      

  6.   

    这个跟这句话写在哪应该没关系的,找找那个函数里面是否出错了,多alert几下,看是否都执行通过了