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 に答える