我正在使用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>
答案 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