【问题标题】:Response from laravel is not logging properly in vue js来自 laravel 的响应未在 vue js 中正确记录
【发布时间】:2019-09-14 11:53:51
【问题描述】:

我正在做一个项目。我使用 laravel 作为后端,使用 VueJS 作为前端。我调用了一个请求 laravel 插入用户的 API。我想检查后端验证是否成功完成。为此,我正在发送一封已在数据库中的电子邮件。验证响应一切正常。但我只想记录一条消息,而不是记录整个响应。不知何故,消息没有记录,但响应正在记录。我不知道是什么问题

API 调用

回应

我想记录消息,而不是整个响应

【问题讨论】:

  • 请不要将代码或错误消息添加为图像。无法复制/粘贴它们以使用它们,依赖屏幕阅读器的用户无法访问它们,并且它们可能被阻止。请编辑您的问题并将所有图像内容替换为文本。见meta.stackoverflow.com/q/285551/1288408

标签: laravel vue.js


【解决方案1】:

链接```.catch(error => { console.log("Errors, error") });根据您的 ajax 请求。

我曾经写过这个小助手。它可以处理 Laravel 以及从后端返回的自定义消息。它并不完美,但可以让你的工作朝着好的方向发展。

export function errorMessage(error) {
    let errorResponse = error.response.data.errors ? error.response.data.errors : error.response.data;

    let errors = [];
    for (let key in errorResponse){
        if(key === 'message'){
            errors.push(errorResponse[key]);
        }
        else if (key !== 'exception' && key !== 'file' && key !== 'line' && key !== 'trace'){
            for (let i = 0; i < errorResponse[key].length; i++){
                errors.push(errorResponse[key][i]);
            }
        }
    }

    return errors;
}

你可以在你的 catch 块中使用它,比如let errors = errorMessage(error))。我给通知插件提供了显示在屏幕顶部的消息。

【讨论】:

  • 如果我不记录响应,则会自动记录响应
【解决方案2】:

所以 422 是一个错误,您必须在 .catch 块中处理它

.then() // everything went good
.catch() // something went wrong

类似的东西

.then(response => {
    // great
})
.catch(error => {
    if (error.response.status === 422) {
    // do something here
    }
}

【讨论】:

  • 422 是响应变量中捕获的错误。
  • 你的then不会在422上运行,只有错误,控制台告诉你有一个未捕获的错误,你需要使用.catch
  • 错误一样吗?
  • 代码看起来可以正确处理,所以可能是缓存问题或类似问题导致浏览器无法运行最新代码。
  • 如果我不记录响应,则会自动记录响应
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-28
  • 1970-01-01
  • 1970-01-01
  • 2018-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多