2016-07-06 4 views
0

그래서 AJAX 요청을 성공적으로 반환 할 수 있지만 변수를 선언하면 jQuery가 죽는 것처럼 보입니다.JSON/jQuery 객체에서 변수를 선언 할 수 없습니다.

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

내 jQuery의 :

다음은 콘솔에서 내 JSON 응답의

$.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", 메시지 : "화면을 보여!", 시간 : 널 (null), FN : "마이크", LN : "메이 나드를"... } – maynardgroupe

답변

0

응답 텍스트에 따라 clockData.rsp이어야합니다. 시계 데이터가 배열임을 암시하는 clockData[0].rsp을 수행하고 있습니다. 그러나 실제로 응답은 배열이 아니라 키 객체입니다.

편집 : 이 아닌 complete 방법을 사용하고있는 것으로 나타났습니다. complete의 메서드 서명은 (jqXHR, textStatus)입니다. 응답 데이터를 원하면 JSON.parse(clockData.responseText)을 통해 액세스하거나 더 나은 방법으로 (responseData, textStatus, jqXHR) 메소드 서명이있는 success 콜백을 사용할 수 있습니다. 또는보다 현대적인 접근법을 사용하려면 약속을 사용하십시오.

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

+0

var rsp = clockData.rsp; : – maynardgroupe

+0

console.log (clockData)의 출력은 무엇입니까? – SArnab

+0

또한이 경우에는 (jqXHR, textStatus)의 서명이있는 콜백에 대해'complete' 메소드를 사용하고 있다는 것을 깨달았습니다.이 경우'clockData' 귀하의 결과가 아닌 요청 객체 자체가 될 것입니다. 당신은'success' 메소드를 사용해야합니다, 그렇지 않으면 AJAX 약속이 더 좋습니다. http://api.jquery.com/jquery.ajax/ – SArnab

관련 문제