不确定这是否可行但是我有一个页面用AJAX提交表单,如果它符合某些条件,它应该自动将用户带到另一页。在标题标记之前输出NOTHING只是一堆条件。
问题:标头重定向无法正常工作......
AJAX
$('form').on('submit', function (e) {
e.preventDefault();
$.ajax({
type: 'post',
url: '_ajax/add.php',
data: $('form').serialize(),
success: function (data) {
$("input").val('Company Name');
$("form").hide();
getInfo();
}
});
});
add.php
$row = mysqli_fetch_array($result);
$id = $row['id'];
header("Location: http://localhost/manage/card.php?id=$id");
答案 0 :(得分:3)
只能在将任何正文发送到浏览器之前修改标题(因此名称标题/正文)。由于您已将AJAX发送到浏览器,因此无法再修改标头。但是,您可以通过AJAX调用add.php
脚本返回$id
参数。然后,可以在JavaScript中使用该参数来重定向页面:window.location = 'http://localhost/manage/card.php?id=' + id
。
有关PHP header()
的更多信息:http://www.php.net/manual/en/function.header.php
<强> AJAX 强>
$('form').on('submit', function (e) {
e.preventDefault();
$.ajax({
type: 'post',
url: '_ajax/add.php',
data: $('form').serialize(),
success: function (data) {
window.location = 'http://localhost/manage/card.php?id=' + data;
}
});
});
<强> add.php 强>
$row = mysqli_fetch_array($result);
$id = $row['id'];
echo $id;
exit;
答案 1 :(得分:1)
您在问题中指出在某些条件下,您需要重定向。
为此,您需要更改您的javascript以包含if条件,并观察某些响应。
我建议将您的回复修改为json,以便您可以传回不同的信息(例如成功状态,重定向网址或您可能需要的其他信息)。
$('form').on('submit', function (e) {
e.preventDefault();
$.ajax({
type: 'post',
url: '_ajax/add.php',
data: $('form').serialize(),
success: function (data) {
var response = $.parseJSON(data);
if (response.redirect) {
window.location = response.redirect_url;
} else {
$("input").val('Company Name');
$("form").hide();
getInfo();
}
}
});
});
至于你的add.php文件,你会想要改变这个更像是这样:
$json = array(
'redirect' => 0,
'url' => '',
}
if (...condition for redirect...) {
$row = mysqli_fetch_array($result);
$id = $row['id'];
$json['redirect'] = 1;
$json['redirect_url'] = "Location: http://localhost/manage/card.php?id=$id";
}
echo json_encode($json);
die();
答案 2 :(得分:0)
您似乎对AJAX的工作方式缺乏了解。 Introduction to Ajax。
您的重定向似乎无法正常工作的原因是因为Ajax调用不会直接影响您的浏览器。这是一个幕后的电话。
要从AJAX调用中获取数据,您需要对返回的数据执行某些操作。
success: function (data) {
$("input").val('Company Name');
$("form").hide();
//You need to do something with data here.
$("#myDiv").html(data); //This would update a div with the id myDiv with the response from the ajax call.
getInfo();
}