在不刷新页面的情况下重定向PHP和JS

时间:2017-08-29 15:42:17

标签: javascript php redirect

我正在尝试创建一个Web文件服务器(云端)。我决定在index.php上放一个基本的表格密码auth。当用户输入密码并单击按钮时,JS会将该密码发送到index.php,并确定其是否正确。

如果是,则index.php将用户重定向到files.php。如果没有,则刷新页面。 我知道重定向和刷新是通过header();完成的,但是当我使用它并观看"网络"在我的浏览器中,它会收到files.php,但不会加载它(停留在index.php上)。我确定原因是在一些文本之后发送标题(好吧,它是标题)。

如何在发送当前页面后将用户的浏览器重定向到某个页面?我应该让JS去做吗?那怎么样?这是我的index.php:

<html>
 <head>
  <title>PHP Test</title>
 </head>
 <body>
 <?php
  echo '
   <h1>Hello World</h1>
   <form>
    <input name="password" type="text"></input>
    <button onclick=authClick() class="test" type="button"></button>
   </form>
  ';
  print_r($_POST);
  if ($pass == "123123") {
   header("Location: files.php");
  }
 ?>
 <script src="scripts/main.js"></script>
 </body>
</html>

这就是JS:

function authClick() {
 var editBox = document.querySelector('input');
 var xhr = new XMLHttpRequest();
 var body = 'password='+encodeURIComponent(editBox.value);
 xhr.open("POST","/index.php",true);
 xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
 xhr.send(body);
}

var myHeading = document.querySelector('h1');
myHeading.textContent = 'nigga';
b = document.querySelector('button');
b.setAttribute('content', 'test content');
b.setAttribute('class', 'btn');
b.innerHTML = 'submit';

2 个答案:

答案 0 :(得分:1)

您正在使用Ajax,而Ajax的目的是在不加载新页面的情况下发出HTTP请求

由于您要加载新页面:删除JavaScript。使用常规HTML提交按钮执行常规表单提交。

答案 1 :(得分:0)

使用Js可以按如下方式编写

window.open( response.data.url, '_blank');

如果您想直接在当前标签中打开它

window.open( response.data.url );