next.js重定向一直pending问题解决

229 阅读1分钟

问题描述

在表单提交成功之后要重定向到/success页面,请求一直pending

image.png

image.png

代码

import { NextRequest, NextResponse } from "next/server";

function getAnswerInfo(formData: FormData) {
  const answerList: any[] = [];
  let questionId = "";
  formData.forEach((value, key) => {
    if (key === "questionId") {
      questionId = value as string;
    } else {
      answerList.push({ componentId: key, value });
    }
  });
  return { questionId, answerList };
}

export async function POST(request: NextRequest) {
  const formData = await request.formData();
  const answerInfo = getAnswerInfo(formData);
  console.log(answerInfo);
  try {
    // 提交到服务端

    // 如果提交成功了
    return NextResponse.redirect(new URL("/success", request.url));
  } catch (error) {
    console.log(error);
  }
  // return NextResponse.json({ errno: 0, msg: "ok" });
}

问题修复

加个状态码, 301或者303都可以

return NextResponse.redirect(new URL("/success", request.url), 301);

参考

github.com/vercel/next…
stackoverflow.com/questions/7…