2016-07-06 3 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", MSG: "спровадить экран!", Время: нулевой, Fn: "Майк", пер: "Maynard" ... } – maynardgroupe

ответ

0

Исходя из вашего текста ответа, похоже, что это должно быть clockData.rsp. Вы делаете clockData[0].rsp, что будет означать, что clockData - это массив. Но на самом деле ваш ответ - это объект с ключом, а не массив.

EDIT: Я просто заметил, что вы также используете метод complete, а не success. complete имеет подпись метода (jqXHR, textStatus). Если вам нужны данные ответа, вы можете получить к нему доступ через JSON.parse(clockData.responseText) или, еще лучше, использовать обратный вызов success, который имеет подпись метода (responseData, textStatus, jqXHR). Или для более современного подхода, используйте обещания.

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

+0

var rsp = clockData.rsp; возвращает undefined :( – maynardgroupe

+0

Что такое вывод console.log (clockData)? – SArnab

+0

Также вы поняли, что используете метод 'complete' для вашего обратного вызова, который имеет подпись (jqXHR, textStatus).' clockData' в этом случае будет сам объект запроса, а не ваш результат. Вы должны использовать метод 'success', или еще лучше, AJAX обещает. http://api.jquery.com/jquery.ajax/ – SArnab