在jQuery+;$中无法读取全局js变量。AJAX

在jQuery+;$中无法读取全局js变量。AJAX,jquery,json,var,populate,Jquery,Json,Var,Populate,早上好 我试图在.ready()之前填充一个名为statusJson的全局变量,但由于某些原因,可以通过chrome控制台调试访问和读取变量,但脚本无法读取变量 守则: 可以看到,json信息是通过$.ajax从远程php文件获得的,我创建了一个模拟ajax json响应的var,并对原始$.ajax代码进行了注释 问题是: 由于某些原因,chrome调试控制台返回未捕获类型错误:无法读取未定义的属性“0” 感谢所有:)您需要将JSON解析为对象 替换如下: statusJson = ajaxD

早上好

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

守则:

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

问题是: 由于某些原因,chrome调试控制台返回未捕获类型错误:无法读取未定义的属性“0”


感谢所有:)

您需要将JSON解析为对象

替换如下:

statusJson = ajaxData;

并移动
$(函数(){Status.init();})
状态
定义


我的朋友,你的代码的结束示例:

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();

我想,答案已经被解析了。原始代码是这样的:,如您所说进行了修改,答案是相同的
uncaughttypeerror:cannotreadproperty“0”of undefined
Updated,如您所说。仍然无效:,
未捕获类型错误:无法读取未定义行的属性“0”:15。本地测试并确保来自
statusjson.php
的响应位于
JSON
formatis JSON,
标题(“内容类型:应用程序/JSON”)
Try
echo json\u encode($response\u data)
回显“{”状态“:[“ok”,“allwork”],“status”:{“login”:true},“stream”:{“1373877245”:{“title”:“asjdhfgjqwherh”}}}否,
未捕获类型错误:对象没有方法“updateHeader”
无法加载
updateHeader()
,与
状态相同。updateHeader
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();