2017-10-03 20 views
0

コントローラーからajax呼び出しまでのエラーメッセージ "From日付を以前に設定する必要があります"を入れようとしています。警告としてdivにエラーメッセージを表示する必要があります。以下のコードは動作しません。コントローラーから渡されたajax呼び出しのテキストを表示

コントローラー:

$response_array['error'] = [trans('servicereports.errors.to_date')]; 
return json_encode($response_array); 

結果:

{ "エラー":[ "日から今日までの前に設定しなければならない"]}

のAjax:

$.ajax({ 
      type: 'POST', 
      url: '{{ route('einsight.servicereports.validateDates') }}', 
      cache: false, 
      data: $(this).serialize(), 
      error: function(msg, result) {      
       var data = jQuery.parseJSON(result); 
       $.each(data, function(index, value) { 
        $("#error-message").append(value); 
       }); 

      } 
     }); 

Divメッセージを広げる:

<div class="flash-message" id="error-message">    
</div> 

答えて

1

間違った方法でエラーを処理しています。 ajax errorメソッドは、ajaxコールにエラーがある場合にのみコールします。あなたのコードが正常に実行さまであなたがあなただけの適切なヘッダにJSONを返すようにresponse(400)->json($data)を使用することができます

$.ajax({ 
      type: 'POST', 
      url: '{{ route('einsight.servicereports.validateDates') }}', 
      cache: false, 
      data: $(this).serialize(), 
      success: function(result) {      
       var data = jQuery.parseJSON(result); 
       $.each(data, function(index, value) { 
        $("#error-message").append(value); 
       }); 

      } 
     }); 
+0

私のコントローラのコードは問題ありませんか?私はajax – ZeroZek

+0

はいのエラーをトリガーすることはできませんので、yiuがやっているサーバー側を介してその細かいエラー処理を行うこともできます –

1

成功機能でそれを処理する必要があります。

$response_array['error'] = [trans('servicereports.errors.to_date')]; 
return response(400)->json($response_array); 

あなたはステータスコード400を送信しているので、あなたはerror機能を誘発します。次に、あなたはそれがjsonとして知られているので、それを解析する必要はありません:

$.ajax({ 
     type: 'POST', 
     url: '{{ route('einsight.servicereports.validateDates') }}', 
     cache: false, 
     data: $(this).serialize(), 
     error: function(msg, response) {    
      $.each(response.error, function(index, value) { 
       $("#error-message").append(value); 
      }); 

     } 
    }); 
関連する問題