如果php返回位置头,我如何在jquery ajax中定位页面


How I can locate page in jquery ajax if php return location header?

我用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(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!";
}
?>

试试这个:

JS-

$("#login").submit(function(e) {
    e.preventDefault();             
    var url = "login";
    $.ajax({
        url:url,
        type:'POST',
        data:$(this).serialize(),
        success:function(result){
            if (result.indexOf('Oops') !=-1) {
               $("#response").text(result)
            } else {
               window.location.href = result;
            }
    });
});

PHP

if(islogin())
    echo $home_url."home";
}
else{
    echo "Oops! Something is wrong!";
}

如果更改页面,为什么要使用Ajax?

如果你仍然想,回显实际的新位置,而不是设置标题并进行

success:function(result){
  if (result.indexOf("Oops") !=-1) $("#response").text(result);
  else location.replace(result);
});