仅在使用Fetch在PHP中成功后才重定向页面

时间:2019-03-02 00:56:53

标签: javascript php variables fetch

我正在为大学项目创建注册系统。这是使用fetch将数据从表单发布到PHP文件。

我想传递一个$message变量,该变量在PHP页面的底部回显,以了解注册是否成功,或者是否发生了错误消息。如果我看到$message等于我的成功字符串,我想我可以使用window.location.href来执行if语句,如下所示?当前,无论PHP响应如何,它都会重定向页面以进行任何成功的获取。

我尝试在成功行的PHP文件中使用header("Location: /index.html");,但这对我也不起作用。我已经花了几个小时寻找解决方案,但是我真的无法理解如何传递此变量。

var myJSON = JSON.stringify(userDetails);

fetch("url/register.php", {
    method: "POST",
    mode: "no-cors", 
    cache: "no-cache", /
    credentials: "same-origin", 
    headers: {
        "Content-Type": "application/json"
    },
    redirect: "follow", 
    referrer: "no-referrer", 
    body: myJSON 
}).then((response) => {
    if (response.ok) {
        return response.blob();
    } else {
        throw new Error("Things went poorly.");
    }
}).then((response) => {
    //Fetch was successful!
    window.location.href = "url/index.html";
}).catch((error) => {
    console.log(error); 
});

2 个答案:

答案 0 :(得分:0)

完成此操作的一种方法是使用URL的查询参数传递成功消息。例如:

window.location.href = "url/index.html?login=success";

然后,在.html页面上,您将拥有查找login查询参数的代码,并且如果该参数等于success,则会显示一些内容。

答案 1 :(得分:0)

您可以在您的php文件中尝试以下操作:

$response = [ message => "the message", success => true ];

echo json_encode($response);

您将收到一个JSON响应,您将使用它来验证请求是否成功。

在您的javascript代码中,您必须将此JSON响应解析为文字对象,例如:

fetch(url, {params})
 .then(response => response.json())
 .then((response) => {
   if (response.success) {
     // fetch was succesfull! 
   } else {
     // response.message could be used to show what was wrong
     throw new Error(response.message);
   }
  })