Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果php返回位置标题,如何在jQueryAjax中定位页面?_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript 如果php返回位置标题,如何在jQueryAjax中定位页面?

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

我使用jquery ajax发送表单,如下所示:

$("#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!";
}
?>