全局js var在jQuery + $ .ajax中不可读

时间:2013-07-15 08:37:45

标签: jquery json var populate

早上好,

我试图在statusJson之前填充名为.ready()的全局变量,但由于某种原因可以使用chrome控制台调试来访问和读取变量,但脚本无法读取变量。

代码:http://jsfiddle.net/wiitohzjeh/pEKyT/

可以看到,json信息是通过$.ajax从远程php文件获取的,我创建了一个模拟ajax-json响应的var,并注释了原始的$.ajax代码。

问题: 由于某种原因,chrome调试控制台返回Uncaught TypeError: Cannot read property '0' of undefined

感谢所有人:)

2 个答案:

答案 0 :(得分:0)

您需要将JSON解析为对象

替换如下:

statusJson = ajaxData;

使用

statusJson = $.parseJSON(ajaxData);

$(function(){ Status.init(); });定义

之后移动Status

Updated Fiddle

答案 1 :(得分:0)

我的朋友代码的闭包示例:

var statusJson = {};

var Status =  new (function(){     

    // public function //
    function init(){        
    // this is the data returned by $.ajax:
    var ajaxData = '{"status":["ok","allwork"],"statuses":{"login":true},"stream":{"1373877245":{"title":"asjdhfgjqwherh"}}}';
        statusJson = $.parseJSON(ajaxData);
        this.updateHeader();  
    };

    // private function //
    function updateHeader(){
        $(".status-header span")
            .fadeOut()
            .addClass(statusJson.status[0])
            .text(statusJson.status[1])
            .fadeIn();
    };

    // return the PUBLIC functions //
    return {
        init: init
     };
})();

Status.init();
相关问题