相信不少人遇到过
<script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.js" type="text/javascript"></script>      
    <script type="text/javascript">
var count =0;
        $(function() {
            $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?", function(data) {
                $.each(data.items, function(i, item) {
                    count++;
    
                });
//alert(count); //由于需求特殊不想写在这里,有其他方法吗?谢谢
            });
        });     
alert(count);   //count = 0 ?
    </script>

解决方案 »

  1.   

        var count =0;
            $(function() {
                $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?", function(data) {
                    $.each(data.items, function(i, item) {
                        count++;
                    
                    });
            //alert(count); //由于需求特殊不想写在这里,有其他方法吗?谢谢
                });
    alert(count);//那么请写在这里
            });     
        alert(count);   //count = 0 这里不行
      

  2.   

    哦 那是因为是异步的~~如果你的需求是必须写在外面
    那么应该说数据不冲突,如果数据冲突的话,要么写在callback里,要么就需要设置为同步
      

  3.   

    问题是 我设为同步也无效。
    所以比较奇怪。
    $.ajaxSettings.async = false;  
      

  4.   

    $.ajaxSettings.async = false;
    是在什么时候设置的啊~同时你这样设置使用后要及时的置为默认值,否则影响其他全局