2016-07-20 8 views
0

コントローラの復帰が{error => 'true'}で成功するたびに成功するとわかりません。ここに私のJSコードは次のとおりです。ajax JSONの成功は常にerror => trueの間に発生します。

$.ajax({ 
      url: root_url + 'getInfo/' + idClient, 
      async: false, 
      dataType: 'json', 
      success: function(data){ 
       for (var x = 0; x < data.retour.length; x++) { 
        content += data.retour[x].startdate; 
        if(data.retour[x].aconfirmer == 1) 
         content += '&nbsp;&nbsp;<i class="fa fa-warning" title="À confirmer"></i>'; 
        content += "<br>"; 
       } 
      }, 
      error: function(e){ 
       console.log(e.responseText); 
      } 
     }); 

そして、ここでは私のコントローラです:

私のインスペクタで
function getInfo($idClient) 
{ 

    header('Content-type: application/json'); 

    try 
    { 
     if($info= $this->infos->getInfos($idPatient)) 
     { 
      echo json_encode(array('success'=>'true', 'retour' => $info));     
     } 
     else 
     { 
      echo json_encode(array('error'=>'true')); 
      //return false; 
     } 
    } 
    catch(Exception $e) 
    { 
     echo json_encode(array('error'=>'true', 'Message'=>$e->getMessage())); 
     return false; 
    } 
} 

私はそこにリターンを見ることができ、それは次のとおりです。 { "エラー": "真"}

答えて

1

あなたは既にあなたのコードでエラーをキャッチしていて、{error:true}で通常の返答を返しています。 リクエストは成功し、200 OKを返すので、エラー関数を呼び出すことができるように成功関数を起動します.HTTPリクエストは、500,404などで完全に失敗する必要があります。

あなたが欲しいものを行うには、次のいずれかの操作を実行する必要があります。エラーステータスコードを

  • 1)エラー
  • 2をキャッチしません)あなたの自己
  • 3)は、この中にハンドル応答機能でエラーフラグが であることを確認します。
+0

ありがとうございました。最良の選択肢は何ですか、私はエラーをログに記録したいと思っていますか? – Alexking2005

+2

@ Alexking2005それはちょうどプログラミングスタイルの意見ですが、最善の答えはありません。 – Barmar

+1

@Barmarは正しいです...私の個人的なスタイルはあなたのように成功をチェックすることです。そして、一連のチェック(成功の中で)でエラーをチェックし、その時点でfalseを返します。 – Zak

関連する問題