php标头正在工作,但有错误

时间:2012-12-04 08:47:46

标签: php html ajax header smarty

实际上我在用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>

3 个答案:

答案 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更改窗口位置。