当前位置: 首页 > 知识库问答 >
问题:

使用axios vuejs和laravel验证表单

董胡非
2023-03-14

我正试图将一些表单数据发送到后端,但Laravel验证不会返回422状态的错误。

公理

简单的axios将请求发送到URL,并希望在请求周期中发现错误时返回响应。

axios.post(this.formURL, formData)
  .then((response) => {
    console.log(response)
  })
  .catch((err) => {
    console.log(err)
  })

Laravel

我已经设置了Laravel验证来验证一些表单输入,如果验证失败,则返回422。

try {
      $this->validate(request(), [
        'chapter_id' => 'required',
        'brother_id' => 'required'
      ]);

      Minute::forceCreate(request());

      return response()->json([
          'status' => 'success',
          'message'    => 'Minute Created',
      ], 201);
  }
  catch (ValidationException $exception) {
      return response()->json([
          'status' => 'error',
          'message'    => 'Error',
          'errors' => $exception->errors(),
      ], 422);
}

回答

给出了一个响应,但当我试图对其进行控制台时,控制台中没有定义:

{
   "status":"error",
   "message":"Error",
   "errors":{
      "brother_id":[
         "The brother_id field is required."
      ],
      "chapter_id":[
         "The chapter_id field is required."
      ]
   }
}

我在这里遇到过这个问题https://github.com/axios/axios/issues/960#issuecomment-398269712但无法使用他们的解决方法解决这个问题。以前有人遇到过这个问题吗?这可能是身份验证关系吗(不太可能),这是我实现的最后一件事。

决议

这个问题解决了。在实现axios拦截器以捕获身份验证错误时,我没有将错误返回给Promise。

  axios.interceptors.response.use(null, (error) => {
    if ( error.response.status == 401 ) {
      store.commit('logout')
      router.push('/login')
    }

    return Promise.reject(error)
  })

返回Promise.reject(错误)丢失。谢谢你们的帮助伙计们!

共有1个答案

马银龙
2023-03-14

我认为信息非常清楚(“需要章节id字段”)。问题似乎不是axios的结果,而是相关的数据值​​不会传递到服务器。请检查数据是否通过

return $ request;

服务器端的命令(控制器的启动)。如果数据没有传输,请仔细检查前端。如果传输数据,请尝试更改范围。

try {
  $this->validate(request(), [
    'chapter_id' => 'required',
    'brother_id' => 'required'
  ]);
}
catch (ValidationException $exception) {
  return response()->json([
      'status' => 'error',
      'message'    => 'Error',
      'errors' => $exception->errors(),
  ], 422);
}
Minute::forceCreate(request());

return response()->json([
     'status' => 'success',
     'message'    => 'Minute Created',
], 201);

所以调试它。

 类似资料:
  • 本文向大家介绍ionic使用angularjs表单验证(模板验证),包括了ionic使用angularjs表单验证(模板验证)的使用技巧和注意事项,需要的朋友参考一下 1什么是模板验证 顾名思义模板验证就是通过一些angularjs的属性来在html标签中验证,为了往模板驱动表单中添加验证机制,你要添加一些验证属性,就像原生的 HTML 表单验证器。 Angular 会用指令来匹配这些具有验证功能

  • 本文向大家介绍Laravel框架表单验证详解,包括了Laravel框架表单验证详解的使用技巧和注意事项,需要的朋友参考一下 基础验证例子 传递给 make 函数的第一个参数是待验证的数据,第二个参数是对该数据需要应用的验证规则。 多个验证规则可以通过 "|" 字符进行隔开,或者作为数组的一个单独的元素。 通过数组指定验证规则 一旦一个 Validator 实例被创建,可以使用 fails (或者

  • 我正在尝试配置laravel的auth以适合我的db。但无论我做什么,都会覆盖像或在LoginController中,它忽略所有内容。有人知道如何用不同的数据库参数化laravel的身份吗? 以下是我在LoginController中更改的内容: 在用户模型中: 编辑:config/auth.php: ]; LoginController: 名称空间App\Http\Controllers\Aut

  • 我试图建立一个认证系统与Laravel 4与Facebook登录。我正在使用Laravel 4的madewith love/laravel-oAuth2包。 当然,当用户登录Facebook时,没有密码可以添加到我的数据库中。但是,我正在尝试检查数据库中是否已经有用户id,以确定是否应该创建一个新实体,或者只是登录当前实体。我想使用Auth命令来实现这一点。我有一张叫做“粉丝”的桌子。 这就是我正

  • 我想使用多身份验证Laravel,但只有一个表"用户" 我如何实现这一点?

  • 问题内容: 我有一个有关表单验证的问题。在以下情况下,它对我不起作用: 我有一个全局表单,在表单内部,动态字段是使用指令呈现的。基于我的字段类型的指令会将最新编译的指令附加到末日。 这是指令: 我在表单中有一个按钮,当表单无效时必须将其禁用。问题是该按钮永远不会被禁用。 html代码: 我的jsFindle链接:http : //jsfiddle.net/8rz6U/1/ 这是我在应用程序中的问题