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

Javascript 仅在PHP中使用Fetch成功后重定向页面,javascript,php,variables,fetch,Javascript,Php,Variables,Fetch,我正在为一个大学项目创建一个注册系统。这是使用fetch将表单中的数据发布到PHP文件中 我想通过PHP页面底部的$message变量进行传输,以了解注册是否成功,或者是否出现了错误消息。如果我能看到$message等于我的成功字符串,我想我可以使用window.location.href执行If语句,如下所示?目前,无论PHP的响应是什么,它都会为任何成功的获取重定向页面 我试过使用标题(“Location:/index.html”)在我的PHP文件中的成功行,但这对我也不起作用。我花了几个小

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

我想通过PHP页面底部的
$message
变量进行传输,以了解注册是否成功,或者是否出现了错误消息。如果我能看到
$message
等于我的成功字符串,我想我可以使用
window.location.href
执行If语句,如下所示?目前,无论PHP的响应是什么,它都会为任何成功的获取重定向页面

我试过使用
标题(“Location:/index.html”)在我的PHP文件中的成功行,但这对我也不起作用。我花了几个小时寻找解决方案,但我真的不知道如何传递这个变量

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); 
});

实现这一点的一种方法是使用URL的查询参数传递成功消息。例如:

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

然后在.html页面上,您会看到一些代码,这些代码会查找
登录
查询参数,如果它等于
成功

,您可以在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);
   }
  })

谢谢你的回复!实际上,我正在使用Cordova构建一个应用程序,所以我认为我必须将.html页面保持为纯html,这样它才能阅读。那么这仍然有效吗?您仍然可以使用我提到的URL方法,但是可以使用javascript读取查询参数并显示正确的成功消息。