在请求AJAX Laravel 5.1之后显示消息错误

时间:2015-07-19 18:53:06

标签: php jquery ajax laravel-5.1

我正在使用laravel 5开发一个应用程序,并通过AJAX发送信息,但是如果我想显示FormRequest生成的错误消息?因为在网络浏览器控制台中 - >预览可以看到该错误消息

我的FormRequest CreateRequest

<?php

 namespace Cinema\Http\Requests;

 use Cinema\Http\Requests\Request;

   class CreateRequest extends Request
   {

     public function authorize()
     {
       return true;
      }


      public function rules()
     {
       return [
          'genre' => 'required',
       ];
     }
 }

我的控制器:

<?php

 namespace Cinema\Http\Controllers;
 use Illuminate\Http\Request;
 use Cinema\Http\Requests;
 use Cinema\Http\Requests\CreateRequest;
 use Cinema\Http\Controllers\Controller;

 class GenreController extends Controller
 {

public function store(CreateRequest $request)
{

    if ($request->ajax())
        {
        return response()->json([
            'petition' => $request->all()
            ],200);
        }
}
}

我的请愿AJAX:

$("#registro").click(function(){
var data = $("#genre").val();
var route = "http://localhost:8000/genero";
var token = document.getElementById('token').value

$.ajax({
url: route,
headers: {'X-CSRF-TOKEN': token},
type: 'POST',
dataType: 'json',
data: {data : data},

});


});

我可以在控制台中看到消息错误:

但怎么能显示? ,谢谢:D

2 个答案:

答案 0 :(得分:0)

仅用于测试目的 - 在视图中有一个空div,其结果为id:

<div id="result"></div>

在ajax .fail上尝试这段代码:

    .fail(function(data) {

            var errors = data.responseJSON;
            var displayErrors = '<ul>';

            $.each( errors, function( key, value ) {
                displayErrors += '<li>' + value[0] + '</li>';
            });

            displayErrors += '</ul>';
            $('#result').html(displayErrors);

        });

就像我在开头所说的那样 - 您可以将 #result div更改为您希望显示错误的位置。

答案 1 :(得分:0)

您的控制器..

<?php

 namespace Cinema\Http\Controllers;
 use Illuminate\Http\Request;
 use Cinema\Http\Requests;
 use Cinema\Http\Requests\CreateRequest;
 use Cinema\Http\Controllers\Controller;

class GenreController extends Controller
{

    public function store(CreateRequest $request)
    {
        if ($request->ajax())
        {
           return response()->json([
             'petition' => $request->all(),
             'success' => true   // Add this line as a success flag
           ],200);
        }
    }
}

和你的ajax ..

$("#registro").click(function(){
    var data = $("#genre").val();
    var route = "http://localhost:8000/genero";
    var token = document.getElementById('token').value

    $.ajax({
        url: route,
        headers: {'X-CSRF-TOKEN': token},
        type: 'POST',
        dataType: 'json',
        data: {data : data},
        success: function(data){
            if(typeof data.success === "undefined"){
                var errors = data.responseJSON;
                var displayErrors = '<ul>';

                $.each( errors, function( key, value ) {
                    displayErrors += '<li>' + value[0] + '</li>';
                });

                displayErrors += '</ul>';
                $('#result').html(displayErrors);
            }
        }
    });
});

和上一个答案一样,您可以添加一个div元素,以显示验证错误。

<div id="result"></div>