首页 > 解决方案 > jQuery AJAX 因表单请求中的文件而失败

问题描述

我的 Laravel 应用程序上的 jQuery AJAX 调用存在问题。type="file"在表单中使用时失败。

我无法在本地重现该问题,它仅发生在产品服务器上。

$.ajax({
    url: url,
    type: $(this).attr("method"),
    dataType: "JSON",
    data: new FormData(this),
    processData: false,
    contentType: false,
    ...

我得到的错误是:

POST ... net::ERR_CONNECTION_CLOSED

Laravel 日志中没有错误,如果我在错误回调中转储错误,则只有一条消息“错误”,所以那里没有任何帮助。

可能是什么问题?

标签: javascriptjqueryajaxlaravel

解决方案


由于某种原因,如果您设置文件类型并尝试提交表单而不实际提交实际文件,则服务器会崩溃。在这种情况下,该字段显示为具有 name""和 size 0

这样做就像一个魅力:

var verifyIdentity = formData.get('verify_identity')

if(verifyIdentity && verifyIdentity.size === 0){
    formData.delete('verify_identity')
}

推荐阅读