0

大家早,

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

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

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

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

谢谢大家 :)

4

2 回答 2

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();
于 2013-07-15T09:32:44.217 回答
0

您需要将 JSON 解析为对象

下面替换:

statusJson = ajaxData;

statusJson = $.parseJSON(ajaxData);

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

更新小提琴

于 2013-07-15T08:51:06.153 回答