Jquery Laravel 5.4 422(不可处理实体)Ajax调用

Jquery Laravel 5.4 422(不可处理实体)Ajax调用,jquery,ajax,laravel,laravel-5,axios,Jquery,Ajax,Laravel,Laravel 5,Axios,我试图通过Ajax调用在同一页面上存储评论并显示结果。但我的控制台中不断出现这个错误 422(不可处理实体) 让我们从我的评论模型开始: class Comment extends Model { // fields can be filled protected $fillable = ['body', 'user_id', 'image_request_id']; /** * Get the user that owns the Comment.

我试图通过Ajax调用在同一页面上存储评论并显示结果。但我的控制台中不断出现这个错误

422(不可处理实体)

让我们从我的评论模型开始:

class Comment extends Model
{
    // fields can be filled
    protected $fillable = ['body', 'user_id', 'image_request_id'];

    /**
     * Get the user that owns the Comment.
     */
    public function user()
    {
        return $this->belongsTo('App\User');
    }
}
让我们继续我的表格:

{{ Form::open(['id' => 'storeComment', 'route' => ['comments.store'], 'method' => 'POST']) }}
{!! Form::textarea('body', null, ['class'=>'form-control', 'rows' => 3]) !!}
{!! Form::hidden('image_request_id', $imageRequest->id) !!}
{{ Form::submit('Add comment', array('class' => 'btn btn-success btn-lg btn-block')) }}
{{ Form::close() }}
让我们看看控制器方法:(CommentController.php)

me CommentRequest.php中的My rules方法

/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
    return [
        'body' => 'required|max:1000',
    ];
}
让我们看看我们的ajax.js

$( document ).ready(function() {

        $('#storeComment').on('submit', function(e) {
            e.preventDefault();

            // Retrieve form data
            var formData = [];
            var data = $(this).serializeArray();
            $.each(data, function(index, field) {
                formData[field.name] = field.value;
            });

            // Post request with formData as data
            axios.post('/comments', formData).then(function(data) {
                console.log(data);
            });
        });
});
当我不使用ajax时,一切都正常,数据都在存储中

在post请求结果之前编辑1控制台日志(数据) 编辑2控制台日志(formData)结果 编辑3错误图片
我认为问题出在错误命名的变量中,它不是
temp
,而是
formData
,请检查以下代码:

    $( document ).ready(function() {
        $('#storeComment').on('submit', function(e) {
            e.preventDefault();

            // Retrieve form data
            var formData = {};
            var data = $(this).serializeArray();
            $.each(data, function(index, field) {
                formData[field.name] = field.value;
            });

            // Post request with temp as data
            axios.post('/comments', formData).then(function(data) {
                console.log(data);
            });
        });
   });

尝试
console.log(数据)
在post request之前,将以下行
dd($request->all())
放在
函数库中,并将结果粘贴到此处。@MayuriPansuriya更新操作检查网络预览中的错误它给出了一个验证程序错误,即“body”字段是必需的,但是我确实在其中发送了一些数据,正如您在日志@MayuriPansuriyaNo中看到的一样,没有相同的问题,只是复制粘贴I update OP时出错。您是否也可以执行
console.log(formData)
并将其放入问题中?使用console.log(formData)Btw idk更新OP如果您看到,但是您的
ajax.js
文件中有两个
submit
处理程序,这只是复制/粘贴的一个错误抱歉,我更新了OP
0: {name: "_token", value: "1DYMMAjNAv9TqOM4ZSu8JRlVpIeImmSDcmXP4Yu7"}
1: {name: "body", value: "blabla"}
2: {name: "image_request_id", value: "2"}
body: "blabla"
image_request_id: "2"
_token: "1DYMMAjNAv9TqOM4ZSu8JRlVpIeImmSDcmXP4Yu7"
    $( document ).ready(function() {
        $('#storeComment').on('submit', function(e) {
            e.preventDefault();

            // Retrieve form data
            var formData = {};
            var data = $(this).serializeArray();
            $.each(data, function(index, field) {
                formData[field.name] = field.value;
            });

            // Post request with temp as data
            axios.post('/comments', formData).then(function(data) {
                console.log(data);
            });
        });
   });