1

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

3 回答 3

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;
        }
    }
);
于 2012-12-04T08:52:22.260 回答
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";
}
});
于 2012-12-04T08:53:02.963 回答
0

只要登录凭据合适,您就可以获得成功响应,此时使用 javascript 或 jquery 更改窗口位置..

于 2012-12-04T08:53:02.450 回答