Javascript 如何在php中通过ajax重定向到不同的页面
这是我的ajax代码,我可以轻松地将表单提交到php页面 后端 下面是我的php代码 我想要的是,当查询成功时,我想重定向我的 用户可以使用ajax访问不同的页面,就像我以前使用php一样 使用标题,通过提供所有必要的url参数,任何帮助 我会非常感激你的Javascript 如何在php中通过ajax重定向到不同的页面,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,这是我的ajax代码,我可以轻松地将表单提交到php页面 后端 下面是我的php代码 我想要的是,当查询成功时,我想重定向我的 用户可以使用ajax访问不同的页面,就像我以前使用php一样 使用标题,通过提供所有必要的url参数,任何帮助 我会非常感激你的 只能写入窗口。location='you URL';如果需要通过ajax重定向到另一个页面,则必须使用javascript或jquery,而不是window.location.href,而不能使用php。您可以收听并捕获响应回声1;或php的
只能写入窗口。location='you URL';如果需要通过ajax重定向到另一个页面,则必须使用javascript或jquery,而不是window.location.href,而不能使用php。您可以收听并捕获响应回声1;或php的任何其他响应,然后在成功回调中重定向到另一个带有window.location.href=X或类似内容的页面 希望这对您有所帮助您认为客户端的id和电子邮件来自哪里?您需要在php端正确返回它们,就像在json中一样。然后,您可以在ajax成功回调中将变量作为响应的属性进行处理
<?php
if( $run && $run_query ) {
echo json_encode(array("id" => $booking, "email" => $email));
}
else {
echo json_encode(array("error" => mysqli_error($db)));
}
如果您想将动态url传递到html,那么您可以通过将动态url从php传递到ajax来实现
<?php
if ($run && $run_query ) {
echo $booking;
echo $email;
$return['url'] = "index.php?booking=success&booking_id=".$booking."&user=".$email."price=".$price."phone=".$phone;
$return['err_msg'] = '';
}
else {
$return['url'] = '';
$return['err_msg'] = "Error description: " . mysqli_error($db));
}
echo json_encode($return);/* encode json data to get in html file*/
?>
javascript代码可能是这样的
<script type="text/javascript">
$("#contact-form").submit(function(e){
e.preventDefault();
$.ajax({
url: 'customerdata.php',
async: true,
cache: false,
data: $('#contact-form').serialize(),
type:'post',
success: function(data) {
console.log(data); /*see server msg */
var pd = JSON.parse(data); /*decode json data*/
location_url = pd.url;
if (pd.url !='') {
document.getElementById("loader").style.display = "none";
window.location.href = location_url;
}
else {
var err_msg = pd.err_msg;
if(err_msg != ''){
$('#error').html(err_msg);
}
document.getElementById("loader").style.display = "none";
}
},
error: function(xhr, ajaxOptions, thrownerror) { }
}
});
});
</script>
我不是PHP专家,但请尝试: 在php代码中:
header('Content-Type: application/json');
echo json_encode(array('id' => 'your_id', "email" => 'test@email.com'));
在js中:
success: function(data) { var email = data.email; var id = data.id }
您需要使用window.location.href=。。。。您不能在这里使用服务器端重定向,因为您在这里发出后台请求,而您在HTTP级别上所做的一切都将在这里“后台”进行。因此,如果PHP脚本动态确定目标URL,则必须将该值传递回AJAX脚本,然后将其指定为新位置。您可以尝试使用window.location.replace'index.PHP?booking=success&booking_id='+id+'&user='+email;但我不是100%确定你希望看到什么。是否要将ajax响应中的标题添加到重定向请求中?与前面的问题相同,您认为id和电子邮件来自何处@我的上帝。最糟糕的混乱代码是不可访问的双重解析。不要这样做。我试过了,但它返回空参数email和id当您手动调用customerdata.php或在浏览器网络控制台中看到什么时,您会得到什么?听起来你还有别的东西不太管用@洛根编辑了代码,请检查,实际上有一个选项,检查电子邮件是否存在!!我得到的是未定义的警告
<script type="text/javascript">
$("#contact-form").submit(function(e){
e.preventDefault();
$.ajax({
url: 'customerdata.php',
async: true,
cache: false,
data: $('#contact-form').serialize(),
type:'post',
success: function(data) {
console.log(data); /*see server msg */
var pd = JSON.parse(data); /*decode json data*/
location_url = pd.url;
if (pd.url !='') {
document.getElementById("loader").style.display = "none";
window.location.href = location_url;
}
else {
var err_msg = pd.err_msg;
if(err_msg != ''){
$('#error').html(err_msg);
}
document.getElementById("loader").style.display = "none";
}
},
error: function(xhr, ajaxOptions, thrownerror) { }
}
});
});
</script>
header('Content-Type: application/json');
echo json_encode(array('id' => 'your_id', "email" => 'test@email.com'));
success: function(data) { var email = data.email; var id = data.id }