Ajax调用的PHP重定向
PHP redirect from Ajax Call
我使用Ajax(带有本地JavaScript)和php的组合来构建登录。
from位于一个php文件(login.php)中。当它被提交时,它运行一个JS onlick函数,将表单数据发布到另一个验证表单数据的php文件:
<input type="button" name="submit" value="Submit" onclick="JavaScript:xmlhttpPost('validator.php')"/>
validator.php的结果使用JavaScript:在div中返回
function updatepage(str){
document.getElementById("result").innerHTML = str;
}
最后,如果密码和用户名都正确,validator.php会运行这样的重定向:
if ( // form data is valid ) {
header("Location: welcome.php");
}
但是,由于所有操作都是通过ajax运行的,这导致"welcome.php"页面显示在原始登录页面的"results"div中。
有没有办法通过JavaScript发送重定向?
我找到了一个可行的解决方案,而不是一个真正有效的答案。我不确定这样做是否正确,但效果很好。
在我的validator.php中,当表单值正确时,我会放入以下内容:
if ( // form data is valid ) {
echo 'redirect';
}
然后,在我的登录页面上,当从php页面返回字符串时,我放了这个:
function updatepage(str){
if (str.match(/redirect/)) {
window.location.replace('welcome.php');
}
else {
document.getElementById("result").innerHTML = str;
}
}
其想法是,当validator.php确认登录凭据正确时,它会返回一个字符串。
如果该字符串与"重定向"匹配,JavaScript将重定向页面。
如果有人对此有任何意见,请发表评论。我觉得这是一个很好的解决方案。很惊讶我没有早点想到。
您可以使用以下代码通过JavaScript重定向:
window.location.href = 'welcome.php';
当您进行AJAX调用时,您不能通过像PHP这样的服务器端应用程序进行重定向。
你必须得到一个响应,并在你的JavaScript中完成它。
下面是一个使用jQuery和PHP的ajax请求示例。
把这个代码放在你的前端(视图):
<script type="text/javascript">
$(document).ready(function(){
$.ajax({
url: 'your-php-file.php',
dataType: 'html',
success: function(response) {
window.location.href = response;
}
});
});
</script>
https://api.jquery.com/jQuery.ajax/
在你的PHP文件中,在你做了你想要的事情之后;回显要重定向的路径或文件作为响应。
<?php
echo "file-or-path-to-redirect.php";
window.location.href='welcome.php';
或使用真实路径
window.location.href='http://www.yourdomain.com/welcome.php';
您可以使用窗口对象
window.location.href="http://example.com/welcome.php";
最简单的方法是用json响应来模拟它。然后解析json,看看得到了什么样的响应。这里有一个工作示例:
Index.html
<!DOCTYPE html>
<html>
<head>
<script>
function updatepage(str){
document.getElementById("result").innerHTML = str;
}
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var jsonParse = JSON.parse(xmlhttp.responseText);
if(jsonParse.redirect){
window.location.replace(jsonParse.redirect);
}
if(jsonParse.success){
updatePage(success);
}
}
}
xmlhttp.open("GET","login.php",true);
xmlhttp.send();
}
</script>
</head>
<body>
<div id="myDiv"><h2>Let AJAX change this text</h2></div>
<button type="button" onclick="loadXMLDoc()">Change Content</button>
</body>
</html>
login.php
<?php
// if($error)
echo json_encode(array('redirect'=>'welcome.php'));
//else
echo json_encode(array('success'=>'<div>logged in</div>'));
?>
- 通过javascript重定向html传递php变量
- PHP-如何重定向到同一页面并更改DOM's
- 如何在一页网站中使用PHP重定向到一个页面
- 当达到codeigniter/tank auth会话超时时,在ajax调用中处理php重定向
- 使用GoogleMapApi保存标记-重定向到.php页面
- php中的脚本重定向是递归的
- PHP表单提交和重定向
- 在AJAX调用中获取重定向的php页面名称
- 在php中不运行java脚本的情况下重定向页面
- php重定向到一个空白页面
- 在php中htaccess重定向url后,无法加载css和js
- 用户在文本框中输入一个数字,并根据使用 PHP 输入的数字重定向到另一个网页
- 我的 PHP 网址不会重定向
- 表单处理后 PHP 重定向
- 在 PHP 中创建模式警报而不是页面重定向验证
- 在发布表单输入时,我可以重定向到一个新的php文件吗
- Facebook 登录重定向 PHP/Javascript 不起作用
- 如何重定向PHP登录到登录用户直接进入ASPX网站
- 如何重定向PHP页面与参数到新的选项卡或窗口
- 重定向PHP文件,不管url后面键入什么