显示从控制器传递的ajax调用中的文本

时间:2017-10-03 11:08:55

标签: php ajax laravel

我正在努力把我的错误信息"从日期开始必须在日期之前设置",通过控制器到ajax调用。错误消息需要在div中显示为警告。以下代码不起作用。

控制器:

 $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>

2 个答案:

答案 0 :(得分:1)

你以错误的方式处理错误。在ajax ajax方法中,只有在$.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 ); }); } }); 调用中出现错误时才会调用。直到你的代码成功执行,你必须在成功函数

中处理它
<br>

答案 1 :(得分:1)

您可以使用$response_array['error'] = [trans('servicereports.errors.to_date')]; return response(400)->json($response_array); 返回带有正确标头的JSON:

error

因为您要发送状态代码400,所以您将触发$.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 ); }); } }); 功能。然后你也不需要解析它,因为它已知为json:

{{1}}