加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Laravel 5 Ajax帖子

发布时间:2020-12-16 02:45:53 所属栏目:百科 来源:网络整理
导读:嗨,我真的很难在laravel 5中的新结构,我试图通过 AJAX帖子提交表单,但我一直收到错误422(错误的请求).我错过了什么或者我需要对我的Request类做些什么吗?这是我的代码: 控制器: public function login(LoginRequest $request){ if ($this-auth-attempt($r
嗨,我真的很难在laravel 5中的新结构,我试图通过 AJAX帖子提交表单,但我一直收到错误422(错误的请求).我错过了什么或者我需要对我的Request类做些什么吗?这是我的代码:

控制器:

public function login(LoginRequest $request)
{

    if ($this->auth->attempt($request->only('email','password')))
    {
        return redirect("/");
    }

    return response()->json(['errors'=>$request->response]);
}

LoginRequest文件(我添加了一个自定义响应方法):

public function response(array $errors)
{
    if ($this->ajax() || $this->wantsJson())
    {
        return response()->json($errors,422);
    }

    return response()->json($errors);
}

我的ajax代码:

$("#form-login").submit(function(){

  var selector = $(this);
  $.ajax({
     url: selector.attr("action"),type: "post",data: selector.serialize(),dataType: "json",}).done(function(data){
     console.log(data);
     if(data.status == "failed"){
       alert("error");
     }else{
        alert("success");
     }
  });

  return false;
});

所以我的问题是,当我提交表单时,我可以从我的控制台看到 – 无法加载资源:服务器响应状态为422(错误请求)

请有人帮忙.提前致谢!

解决方法

我其实只是在努力解决这个问题,实际上答案非常简单.

因为Laravel的请求以状态代码422响应,所以jQuery的成功/完成函数不会触发,而是触发错误函数,因为它不是200.

因此,为了从验证失败的Request对象生成的AJAX请求中获取JSON响应,您需要定义错误处理程序,在您的情况下如下:

$.ajax({ /* ... */ })
    .done(function(response) { /* ... */ })
    .error(function(data) { // the data parameter here is a jqXHR instance
        var errors = data.responseJSON;
        console.log('server errors',errors);
    });

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读