鍍金池/ 問(wèn)答/PHP/ laravel中ajax請(qǐng)求一直報(bào)parsererror錯(cuò)誤

laravel中ajax請(qǐng)求一直報(bào)parsererror錯(cuò)誤

laravel5.4中使用ajax請(qǐng)求控制器接口一直報(bào)錯(cuò)
admin.js

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

$(".post-audit").click(function(){
    var status = $(this).attr("post-action-status");
    var post_id = $(this).attr("post-id");
    var _self = $(this);
    $.ajax({
        url: "/admin/post/"+post_id+"/operate",
        method: "POST",
        data: {"status": status},
        dataType:"json",
        success: function handleSuccess(data){
            console.log(data);
            //操作后該項(xiàng)不顯示
            //_self.parent().parent().remove();
        },
        error: function(xhr, type){
            console.log(type);
        }
    });
});

控制器

public function operate(Post $post)
    {
        return ['code'=>200,'msg'=>'測(cè)試'];
        /*$this->validate(request(), [
            "status" => 'required|in:-1,1',
        ]);

        $post->status = request('status');
        $post->save();
        return response()->json([
            'error' => 0,
            'msg' => ''
        ]);*/
    }

上面的請(qǐng)求瀏覽器控制臺(tái)一直提示parsererror:

clipboard.png

但是將返回?cái)?shù)據(jù)寫在路由里又是正常的

Route::post('/admin/post/{post}/operate',function(){
    return ['code'=>200,'msg'=>'測(cè)試']; 
})->where('post','[0-9]+');

瀏覽器控制臺(tái)輸出:

clipboard.png
小弟新手,請(qǐng)大神多多指教

回答
編輯回答
挽歌

parser error 意思是 解析錯(cuò)誤,你最有可能的問(wèn)題是,后臺(tái)返回的數(shù)據(jù)不是標(biāo)準(zhǔn)的json各式。
通過(guò)分析你的代碼發(fā)現(xiàn)

你用以下的驗(yàn)證規(guī)則
$this->validate(request(), [
    "status" => 'required|in:-1,1',
]);
如果驗(yàn)證失敗,相應(yīng)的響應(yīng)會(huì)自動(dòng)生成。問(wèn)題就出在這了。因?yàn)檫@個(gè)響應(yīng)并不是你期望的json。可手工對(duì)這個(gè)規(guī)則處理錯(cuò)誤信息,返回自定義的錯(cuò)誤格式,具體請(qǐng)參考 laravel驗(yàn)證手冊(cè)。

如果解決了您的問(wèn)題,請(qǐng)采納

2018年5月23日 17:51
編輯回答
吢涼

public function operate(Post $post)
這個(gè)地方應(yīng)該限制類型整形 而不是post對(duì)象 或者你把他去掉應(yīng)該就可以了
public function operate($post) 這樣寫

2018年6月1日 06:45