我试图将一个元素数组从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();
}
答案 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拥有关于所有字段的所有数据必须填写。
我设置了一个独立于更新字段的新控制器,一切正常