2016-07-06 30 views
0

所以,我能夠成功返回我的AJAX請求,但是我的jQuery似乎一旦從聲明瞭一個變量就會死亡。無法從JSON/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);從來沒有發生......我很困惑..

長時間的用戶,第一次的海報,所以很容易對我..謝謝噸!

+0

這裏的clockData的輸出: 對象{RSP: 「1」,味精: 「展現出來的屏幕!」,時間:空,FN: 「邁克」,LN: 「梅納德」 ... } – maynardgroupe

回答

0

根據您的回覆文本,它看起來應該是clockData.rsp。你正在做clockData[0].rsp這意味着clockData是一個數組。但事實上,你的迴應是一個關鍵的對象,而不是一個數組。

編輯:我只是注意到你也使用complete方法,而不是successcomplete有一個方法簽名(jqXHR,textStatus)。如果您需要響應數據,則可以通過JSON.parse(clockData.responseText)或更好的方式訪問它,使用方法簽名爲(responseData,textStatus,jqXHR)的success回調。或者對於更現代的方法,使用承諾。

REF:http://api.jquery.com/jquery.ajax/

+0

var rsp = clockData.rsp;返回undefined :( – maynardgroupe

+0

)console.log(clockData)的輸出是什麼? – SArnab

+0

也只是意識到你正在爲你的回調使用'complete'方法,它的簽名是(jqXHR,textStatus)。將會是請求對象本身,而不是你的結果。你應該使用'success'方法,或者更好的方法是使用AJAX promise。http://api.jquery.com/jquery.ajax/ – SArnab