Перенаправление страницы только после успеха в PHP с использованием Fetch - PullRequest
0 голосов
/ 02 марта 2019

Я создаю систему регистрации для университетского проекта.Это использует fetch для отправки данных из формы в файл PHP.

Я хочу передать переменную $message, которая отображается в нижней части моей страницы PHP, чтобы узнать, была ли регистрация успешной или произошло сообщение об ошибке.Если я увижу, что $message соответствует моей строке успеха, я думаю, что могу сделать оператор if, используя window.location.href, как показано ниже?В настоящее время он перенаправляет страницу для любой успешной выборки, независимо от ответа PHP.

Я пытался использовать header("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); 
});

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

Вы можете попробовать это в своем 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);
   }
  })
0 голосов
/ 02 марта 2019

Один из способов сделать это - использовать параметры запроса URL для передачи сообщения об успехе.Например:

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

Тогда на странице .html будет код, который ищет параметр запроса login и отображает что-то, если оно равно success.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...