无法从JSON / jQuery对象声明变量

时间:2016-07-06 00:40:07

标签: php json ajax

所以,我能够成功返回我的AJAX请求,但是一旦我从它声明了一个变量,我的jQuery似乎就死了。

这是我在控制台上的JSON响应:

Object {readyState: 4, responseText: "{"rsp":"1","msg":"show out screen!","time":null,"fn":"Mike","ln":"Maynard","ul":"0"}", status: 200, statusText: "success"}

这是我的jQuery:

    $.ajax({
        url: "clock.php",   
        type: "POST",   
        async: false,
        data: clockData,
        cache: false,
        timeout: 5500,
        error: function (clockData) {
        //var rsp = (clockData.fn);
        alert('Error');
            //do error
        },


        dataType: 'json',
        complete: function (clockData) {            
            console.log(clockData);
            var rsp = clockData[0].rsp;

            console.log(rsp);

            var ul = clockData[0].ul;   
            if(ul=='1') { 
                showUi(); 
            }

            var una = (clockData.fn + ' ' + clockData.ln);
            $('.nameBlock').text(una);
            $('.nameBlockFirst').text(clockData.fn);
            //--> show in ui

            if (rsp=='0') {
                console.log('got here2');
                var dir = 'In'; tcShow(dir);
            }   

            //--> show out ui                           
            if (rsp=='1'){
                alert('trying to show out screen2');        
                var dir = 'Out'; tcShow(dir);
            }

            //--> show in result
            else if (rsp=='2'){
                var time = (clockData.time); var dir = 'in'; showResult(time,dir,ul);
            }
            //--> show out result
            else if (rsp=='3'){
                var time = (clockData.time); var dir = 'out'; showResult(time,dir,ul);
            }
            //--> show message
            else if (rsp=='4'){
                endClock();
            }                   
            else {
                endClock();
            }
        }
    });

所以,console.log(clockData);返回正常,但是console.log(rsp);永远不会发生......我很困惑......

1 个答案:

答案 0 :(得分:1)

根据您的回复文字,它看起来应该是clockData.rsp。你正在做clockData[0].rsp这意味着clockData是一个数组。但实际上,您的响应是一个键控对象,而不是数组。

编辑:我刚刚注意到您也在使用complete方法,而不是successcomplete的方法签名为(jqXHR,textStatus)。如果您需要响应数据,可以通过JSON.parse(clockData.responseText)访问它,或者更好的是,使用具有方法签名(responseData,textStatus,jqXHR)的success回调。或者对于更现代的方法,使用promises。

参考:http://api.jquery.com/jquery.ajax/