【问题标题】:422 Error Laravel ajax form post on Microsoft EdgeMicrosoft Edge 上的 422 错误 Laravel ajax 表单帖子
【发布时间】:2018-09-09 11:33:38
【问题描述】:

我有一个表单可以将一些数据发布到我的 laravel 控制器,它似乎在 Chrome、Safari 和 Firefox 上工作得非常好,但在 Edge 上失败并出现 422(不可处理实体)错误。

谁能看出可能是什么问题?我认为这与请求中提交的文件有关。

我以前有:

data: $(this).serialize(),

但这不适用于文件提交。

$.ajax({
                //global: false, //Stops global ajaxError handling from app/settings.js --}}
                type: "POST",
                url: "/admin/logs",
                dataType: 'json',
                data: new FormData(this),
                processData: false,
                contentType: false,
                success: function (response) {
                    $('#loading').css({
                        display: "none"
                    });
                    toastr.options.onHidden = function() { window.location.href = '/admin/logs'; }
                    toastr.success(response.message);
                },
                error: function (response) {
                    $('#loading').css({
                        display: "none"
                    });
                }
            })

谢谢。

【问题讨论】:

  • 你有没有看到可能会破坏它的构成?
  • 摆姿势了?抱歉什么意思?
  • 尝试alert();console.log(); 使用您的数据来查看正在发送/发布的内容,就像@epascarello 所说的那样。把它贴在这里,所以我们也可以有一些见解。 @起源。例如succes: function (response) { alert(new Formdata(this)); // rest of current code },
  • 我似乎记得 IE(可能还有边缘)将对象序列化为 [object Object] 或类似的东西。尝试使用 JSON.stringify() 进行序列化,我认为这在某些时候为我解决了类似的问题。
  • HTTP422: UNPROCESSABLE ENTITY - 请求格式正确,但由于语义错误而无法处理。 (XHR)POST - localhost:8000/admin/logs

标签: javascript php json ajax laravel


【解决方案1】:

好的,它似乎已修复。这是 Edge 困难、最大文件大小/最大帖子大小的混合,@Rick_Jellema 所说的enctype="multipart/form-data" 似乎有助于从 Edge 上的文件中接受正确的 mime 类型。我最终没有更改初始 ajax 提交或服务器上的验证。谢谢大家

【讨论】:

  • 乐于助人:)
【解决方案2】:

422(不可处理的实体)

这就是 Laravel 在 ajax 请求中显示验证错误的方式。 您可以从该响应中提取数据并在需要时显示错误消息。 删除验证规则后尝试确认。

查看官方docs

【讨论】:

  • 所以我删除了验证规则并尝试,我收到此错误:HTTP500: SERVER ERROR - 服务器遇到了阻止它完成请求的意外情况。 (XHR)POST - localhost:8000/admin/logs 该文件似乎也是空的
  • 什么文件是空的?日志说什么?检查storage/laravel/laravel.log 和/或您的 Apache 和/或您的 PHP 日志。如果你不看日志,你就是在瞎开车。
  • 转到控制台中的网络选项卡并重试,在那里您可以看到请求,并且可以看到单击请求时的错误
  • @Don'tPanic 我已经检查了日志,但在这件事上没有任何帮助。我认为这是一个文件大小/mime 类型问题
  • @Origin 422 是 Laravel 对 AJAX 请求 laravel.com/docs/5.6/validation 的标准验证失败响应。如果您删除了验证,但仍然收到 500 错误,则说明您有验证问题另一个问题,或者这两个问题相关。日志应该可以帮助您找出它是哪些,以及它是什么。也许你的 500 是不相关的,但即使这是真的,你会在解决验证问题后立即点击它:-)
猜你喜欢
  • 2018-10-20
  • 1970-01-01
  • 2017-07-23
  • 1970-01-01
  • 2018-11-03
  • 2018-12-13
  • 2018-12-02
  • 1970-01-01
  • 2012-10-02
相关资源
最近更新 更多