在POST请求LARAVEL期间禁用Ajax验证

时间:2016-12-25 23:05:44

标签: jquery ajax laravel validation

enter image description here我试图将一个元素数组从jQuery传递给PHP Laravel。我在项目更新细节中。 每个人都在使用ajax发布帖子请求。它正在工作,但它每次都会被卡住,因为它需要在继续之前验证该页面中的所有字段,但PHP已经这样做了...我需要Ajax才能将该数组传递给PHP,我不需要#39; t需要它做PHP正在做的事情。所以我想跳过ajax中的所有验证规则。

你有什么想法吗?

这是我的代码

var token = $('input[name=_token]').val()

$.ajax({
    data: {_token: token, dataOrder: orderArray},
    type: 'POST',
    dataType: "json",
    url: '/admin/projects/update/37',
    error: function(data) {
        instance
        var errors = data.responseJSON;
        console.log('server errors',errors);
   },
   success: function (data) {
        $(".content").append('<strong>Yeah</strong>');
   }

});

使用此代码,我总是得到422(不可处理的实体)

这是我的控制器核心代码

public function update(Request $data)
    {

    $this->validate($data, [

        'title' => 'required|min:3|max:255|unique:projects,title,' . $data->id,
        'slug' =>'min:3|max:255|unique:projects,slug,' . $data->id,
        'date' => 'required|before:now',
        'client' => 'min:3|max:255',
        'category' => 'required',
        'image_list' => 'image|max:2000',
        'description' => 'required|min:3'

    ]);

    $update = Project::find($data->id);
    $update->title = $data->title;
    $update->slug = $this->slug($data, $data->slug);
    $update->date = $data->date;
    $update->client = $data->client;
    $update->category_id = $data->category;
    $update->description = $data->description;

    $update->save();
}

dd的截图($ data-&gt; all()); enter image description here

3 个答案:

答案 0 :(得分:0)

请参阅文档:jQuery Post Ajax call

使用jQuery进行最简单的Ajax调用而不进行验证:

var imageslist = Directory.EnumerateFiles(dir, "*.bmp", SearchOption.AllDirectories)
    .AsParallel()
    .Select(path => new Bitmap(path))
    .Select(bmp => ResizeImage(bmp, 100, 100))
    .ToList();

答案 1 :(得分:0)

在HTML页面上有一个CSRF令牌。

<meta name="csrf-token" content="{{ csrf_token() }}">

在脚本中使用ajaxSetup方法设置x-csrf-token标头。

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

..并从数据{}对象中删除_token位。

答案 2 :(得分:0)

我在Ajax调用中遇到Laravel表单验证错误的原因是因为Ajax调用是在更新表单中进行的,其中包含所有其他字段,这样PHP期望Ajax拥有关于所有字段的所有数据必须填写。

我设置了一个独立于更新字段的新控制器,一切正常