0

ajaxリクエストを介してユーザーをログインページにリダイレクトしたい登録ページがあります。ただし、この特定の ajax リクエストはリダイレクトを行いますが、POST リクエストの後にセッションを渡しません

 var dataString = 'name='+ name + '&email=' + email1 + '&password=' + password1;
                       //alert (dataString);return false;
                       $.ajax({
                           type: "POST",
                           url: "http://localhost/ci/index.php/login/add/",
                           data: dataString,
                           success: function() {
                            window.location.href = "http://localhost/ci/dashboard";
                                                }
                       });

ログイン/追加機能は、POST リクエストを介して値を取得し、これらの値をセッションに配置してリダイレクトを行います。プレーンなphp/CIでajaxリクエストがなくても、同じことが完全に起こっています。ただし、ajax リクエスト経由では発生しません。

役立つ場合は、phpコードを次に示します

    if ($this->input->post("add") == "Sign up") {
        $data_array = array(); //this array contains post data
        $output = $this->user_model->add_new($data_array);
        if($output == TRUE){
                $this->session->set_userdata('logged_in', '1'); 
        }

        $data = array(
                    'name' => form_error('name'), 
        'email' => form_error('email'), 
        'password' => form_error('password')    
        );
        echo json_encode($data);

}

4

1 に答える 1

1

The login/add function is taking the values via POST request which then puts these value in session and does a redirect. The same thing is happening perfectly without a ajax request in plain php/CI. But, not happening via ajax request.

これは、以前はsynchronousリクエストを実行していましたが、jQuery ajax ではリクエストを実行していたためですasynchronous(これは、javascript が PHP スクリプトの一部を無視する可能性があることを意味します)。asyncあなたのajaxにパラメータを追加してみて、それをfalse

于 2011-08-24T20:48:38.573 に答える