我正在尝试创建一个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';
答案 0 :(得分:1)
您正在使用Ajax,而Ajax的目的是在不加载新页面的情况下发出HTTP请求 。
由于您要加载新页面:删除JavaScript。使用常规HTML提交按钮执行常规表单提交。
答案 1 :(得分:0)
使用Js可以按如下方式编写
window.open( response.data.url, '_blank');
如果您想直接在当前标签中打开它
window.open( response.data.url );