【问题标题】:Ajax gets only success response in LaravelAjax 在 Laravel 中只获得成功响应
【发布时间】:2021-12-20 00:08:14
【问题描述】:

即使出现错误,我的 ajax 代码也总是会收到成功响应。 我正在使用 Laravel 8.2。

这里是 JavaScript

    $(".deleteRecord").click(function(){
    var id = $(this).data("id");
    var token = $("meta[name='csrf-token']").attr("content");
    if(confirm('Do you want to delete?')){
        $.ajax(
            {
                url: "operDel/"+id,
                type: 'post',
                cache: false,
                data: {
                    "id": id,
                    "method": 'post',
                    "_token": token,
                },
                dataType: "json",
                success: function() {
                    alert('Record is deleted'); // I getting only this alert
                },
                error: function() {
                    alert('You can not delete this record');
                }
            });
    }
});

这是路线

Route::post('operDel/{id}', '\App\Http\Controllers\OperationController@destroy')->name('operDel')->middleware('auth');

这是控制器

    public function destroy($id)
{

    $user = User::find($id);
    if($user->type !== 0) {
            $user->delete();
            return response()->json([
                'success'=>"Record deleted."
            ]);
    }
    else{
        return response()->json([
            'error' => "You can not delete this"
        ]);
    }
}

控制器运行正常,$user-> 类型时它从数据库中删除了记录! == 0。 但我只在成功功能中收到警报。 如何显示警报响应消息?

【问题讨论】:

  • 您的问题是您没有按照应有的方式使用框架,您应该使用Gates 来授权请求​​并使用Form Requests 来执行此操作......最重要的是您阅读了整个文档,因此您可以知道该框架提供了什么...

标签: javascript jquery ajax laravel


【解决方案1】:

您需要发送错误响应代码,以便 AJAX 将响应视为失败,例如:

public function destroy($id)
{

    $user = User::find($id);
    if($user->type !== 0) {
            $user->delete();
            return response()->json([
                'success'=>"Record deleted."
            ]);
    }
    else{
        return response()->json([
            'error' => "You can not delete this"
        ], 400); // 400 means bad request
    }
}

发送一个超过 400 的响应代码将使 AJAX 明白存在错误。

【讨论】:

  • 400401(未授权)或 403(禁止)
猜你喜欢
  • 2015-05-07
  • 2017-02-18
  • 2019-04-22
  • 1970-01-01
  • 2021-01-06
  • 2016-12-16
  • 2021-02-22
  • 1970-01-01
  • 2016-11-09
相关资源
最近更新 更多