2016-07-06 15 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の出力だ "メイナードは、" ... } – maynardgroupe

答えて

0

回答テキストに基づいて、それはclockData.rspのように見えます。 clockData[0].rspはclockDataが配列であることを意味しています。しかし、実際には、あなたの応答は配列ではなくキー付きオブジェクトです。

編集:ではなく、completeの方法も使用していることがわかりました。 completeのメソッドシグネチャは(jqXHR、textStatus)です。応答データが必要な場合は、JSON.parse(clockData.responseText)でアクセスするか、(responseData、textStatus、jqXHR)のメソッドシグネチャを持つsuccessコールバックを使用することができます。あるいは、より現代的なアプローチのために、約束を使用してください。

REF: オブジェクト{RSP: "1"、メッセージ: "画面を見る!"、時間:ヌル、FN: "マイク"、LN:http://api.jquery.com/jquery.ajax/

+0

var rsp = clockData.rsp;戻り値:undefined :( – maynardgroupe

+0

console.log(clockData)の出力は何ですか? – SArnab

+0

また、コールバックには(jqXHR、textStatus)という署名を持つ 'complete'メソッドが使用されていることが分かりました。あなたの結果ではなく、リクエストオブジェクトそのものになります。あなたは 'success'メソッドを使うべきです、もっと良いのは、AJAXが約束していることです。http://api.jquery.com/jquery.ajax/ – SArnab

関連する問題