实际上我在用ajax按钮登录后尝试重定向到索引 但是发生的事情很奇怪,标题并没有把我带到index.php! 我只是在login.php页面中获取index.php的HTML代码! 我正在使用Smarty将html与php代码分开,我不知道如何解决这个问题! 单击登录并在登录页面中获取索引的HTML! 为什么?
在login.php页面
if ($_POST['action'] == 'login') {
$_SESSION['username'] = $username;
header("Location: index.php");
exit();
}
ajax功能:
function ajax3(Div_Submit,Div_Response,SuccessScript,Data_Submit)
{
var Type = 1;
var Aj_type = "POST";
var post_data = '';
if(!Data_Submit)
post_data = $('#'+Div_Submit+' *').serialize();
else
post_data = Data_Submit;
$.ajax({
type: Aj_type,
url: document.URL,
data: post_data,
dataType: "text",
beforeSend: function(xhr)
{
$.blockUI({ message: '<img src="images/loading.gif" />',
css: { border: 'none', backgroundColor: 'transparent' } });
xhr.setRequestHeader("Ajax-Request", "true");
},
success: function(response) {
$('#'+Div_Response).html(response+'<script>'+SuccessScript+'</script>');
},
complete: function(){
$.unblockUI();
}
});
return false;
}
html按钮调用:
<div class="buttons" >
<a class="positive" onclick="$('#login_action').val('login');ajax3('login_form','login_form','','')">
<img src="images/checkbox_checked.png" alt=""/>
<font size="3px"> login </font>
</a>
</div>
答案 0 :(得分:4)
使用AJAX,这是预期的输出。会发生什么是 AJAX请求本身被重定向到index.php,然后输出然后返回到该请求。
如果要从AJAX重定向到index.php,则需要使用特定代码或JSON编码的值退出并在AJAX结果中捕获它。
示例:
if ($_POST['action'] == 'login') {
$_SESSION['username'] = $username;
echo json_encode(array('redirect' => 'index.php'));
exit;
}
JavaScript的:
$.ajax(
url: 'your-url',
success: function(data) {
if (data.redirect) {
document.location.href = data.redirect;
}
}
);
答案 1 :(得分:4)
这不会像你期望的那样有效。
它应该是这样的。
if ($_POST['action'] == 'login') {
$_SESSION['username'] = $username;
echo "success";
}
在您的javascript / jquery文件中。 有类似的东西
jQuery.ajax({
url: "login.php",
success:function(data){
if(data == "success") window.location = "index.php";
}
});
答案 2 :(得分:0)
只要登录凭据合适,您就可以获得成功响应,此时使用javascript或jquery更改窗口位置。