如何使用ajax和jquery输出内容和重定向?

时间:2012-02-22 14:04:31

标签: php jquery ajax redirect

我正在使用jquery构建一个注册表单,它应该通过Ajax处理请求。 我的代码:

$.ajax( 
{ 
    type: "POST", 
    url: "http://www.example.com/register.php", 
    data: $("#register-form").serialize(),
    cache: false,
    success: function(message)
    {   
                    $("#reg_notification").html(message).fadeIn(400);               
    }           
});

现在,如果电子邮件地址无效,则register.php应该输出错误,这将被放入div reg_notification。如果没有错误,则应将用户重定向到“欢迎页面”。但重要的是这个页面不是永久静态的,换句话说,我不能在jquery代码中使用location.href但是想要使用

header("Location: http://www.example.com")
PHP中的

。问题是用户不会被重定向,但www.example.com的内容将放在div reg_notification内。

我在这里发现了一个类似的问题:How to manage a redirect request after a jQuery Ajax call但不同之处在于他们使用的json由于我的服务器而无法使用,而且他们也在javascript中重定向而不是在php文件中。< / p>

1 个答案:

答案 0 :(得分:1)

标题重定向不可能。

使用类似的东西:

...
success: function(message)
{   
     $("#reg_notification").html(message)
          .fadeIn(400, function() {window.location = "url"});
}

success: function(response)
{   
     if (response.success) {
          $("#reg_notification").html(response.message)
               .fadeIn(400, function() {window.location = response.redirectTo; } );
     } else {
          // somethings else
     }
}   

在php中:

header("Content-type: application/json");
echo json_encode(array(
    "success" => true,
    "message" => "some message",
    "redirectTo" => "my url"
));

<强>更新 标头重定向不可能,因为XMLHttpRequest透明地跟随重定向url获取结果。见there