Sveltekit – 防止表单错误 500 重定向

huangapple go评论62阅读模式
英文:

Sveltekit - prevent form error 500 redirect

问题

在表单操作中,我抛出错误500,并在增强函数中处理它。但是之后它仍然重定向到错误页面。是否有办法阻止这种情况发生?

英文:

In form action I throw error 500, and handle it in enhance function.
BUT it still redirects to error page after it.

Is there a way to prevent this?

答案1

得分: 3

在表单操作中,您可以使用Sveltekit的fail函数来返回错误到前端,而不是抛出错误:

import { fail } from '@sveltejs/kit';

// 在您的表单操作方法内部
if (!condition) {
    return fail(500, { randomAttribute: 123 });
}

通过这样做,您可以轻松处理use:enhance指令中的错误:

<form method="POST" use:enhance={() => {
    return async ({ result }) => {
        if (result.type === 'failure') {
            // result.status 包含错误代码
            // result.data 包含您在fail函数中传递的数据对象
        }
    };
}}>

</form>
英文:

In a form action, instead of throwing an error you can use Sveltekit's fail function to return an error to the frontend:

import { fail } from &#39;@sveltejs/kit&#39;;


// inside your form action method
if (!condition) {
	return fail(500, { randomAttribute: 123 });
}

By doing so, you can easily handle the error in the use:enhance directive:

&lt;form method=&quot;POST&quot; use:enhance={() =&gt; {
    return async ({ result }) =&gt; {
        if (result.type === &#39;failure&#39;) {
            // result.status contains the error code
            // result.data contains the data object you passed in the fail function
        }
    };
}}&gt;

&lt;/form&gt;

huangapple
  • 本文由 发表于 2023年5月15日 09:41:32
  • 转载请务必保留本文链接:https://go.coder-hub.com/76250403.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定