Javascript 如果php返回位置标题,如何在jQueryAjax中定位页面?
我使用jquery ajax发送表单,如下所示:Javascript 如果php返回位置标题,如何在jQueryAjax中定位页面?,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我使用jquery ajax发送表单,如下所示: $("#login").submit(function(e) { e.preventDefault(); var url = "login"; $.ajax({ url:url, type:'POST', data:$(this).serialize(), success:function(result){ $("#r
$("#login").submit(function(e) {
e.preventDefault();
var url = "login";
$.ajax({
url:url,
type:'POST',
data:$(this).serialize(),
success:function(result){
$("#response").text(result)
});});
我想找到网页,如果登录成功。
这是我的php条件:
if(islogin())
header("Location:".$home_url."home");
}
else{
echo "Oops! Something is wrong!";
}
如何更改jquery脚本以定位页面?谢谢。如果你改变了页面,为什么还要使用Ajax呢 如果仍然需要,则回显实际的新位置,而不是设置标题并执行
success:function(result){
if (result.indexOf("Oops") !=-1) $("#response").text(result);
else location.replace(result);
});
试试这个:
JS
PHP
使用以下内容更改ajax成功声明:
success: function(data, status, xhr) {
console.log(xhr.getResponseHeader('Location'));
}
因此,您的完整脚本将是:
$("#login").submit(function(e) {
e.preventDefault();
var url = "login";
$.ajax({
url:url,
type:'POST',
data:$(this).serialize(),
success: function(data, status, xhr) {
console.log(xhr.getResponseHeader('Location'));
}
});});
您的php脚本将更改为:
<?php
header("Access-Control-Expose-Headers: Location");
if(islogin())
echo $home_url."home";
}
else{
echo "Oops! Something is wrong!";
}
?>
似乎他只想在登录成功时更改页面,这就要求使用AJAX.Tnx。但是如果我不想改变我的后端脚本,我该怎么做呢?我不想比较结果字符串。也许用户会改变主题!谢谢。但是,如果登录不成功,如何显示错误消息呢?在php中添加以下标题,一切都应该正常:访问控制公开标题:Location
并测试Location标题,而不仅仅是控制台日志it@Pk19000答案更新!请尝试检查状态代码,如果(xhr.status==302),则使用xhr.getResponseHeader('Location')
.Tnx获取值。但是如果我不想改变我的后端脚本,我该怎么做呢?我不想比较结果字符串。也许用户会改变主题!这是一个问题,因为这一行“header”(“Location:.$home\u url.“home”);”不返回任何值,也不能更改主页面上的任何值,这是一个异步请求。那么,在没有比较字符串的情况下,如何做到这一点呢?如果我更改我的后端脚本?如果你的问题是安全性,你不能在这里解决问题!您可以在PHP中为登录或错误登录添加会话变量,并检查会话是否设置在私有页面上,如果没有设置,则强制将用户重定向到登录页面(使用PHP命令!)。客户端永远是一个风险,服务器端是您检查和阻止用户的安全代码!
$("#login").submit(function(e) {
e.preventDefault();
var url = "login";
$.ajax({
url:url,
type:'POST',
data:$(this).serialize(),
success: function(data, status, xhr) {
console.log(xhr.getResponseHeader('Location'));
}
});});
<?php
header("Access-Control-Expose-Headers: Location");
if(islogin())
echo $home_url."home";
}
else{
echo "Oops! Something is wrong!";
}
?>