0

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

我的表单请求创建请求

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

4

2 回答 2

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>
于 2016-06-01T09:32:44.517 回答
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 更改为您希望显示错误的位置。

于 2015-07-29T15:34:16.990 回答