1

AJAXを介してフォームを投稿しています。成功した場合は、別のページにリダイレクトされます。フォームは正常に送信されますが、リダイレクト部分は失敗します。

私のChromeデベロッパーツールバーには、リクエストメソッドGETとステータスコード200OKの正しいリクエストURLが表示されます。

JavaScriptは次のようになります。

$('#submit-login').live('click', function(e) {
    e.preventDefault();

    var username = $('#username').val();
    var password = $('#password').val();

    var dataString = 'username=' + username + '&password=' + password;

    $.ajax({
        type: 'POST',
        data: dataString,
        url: '/account/do_ajax/login',
        dataType: 'json',
        success: function(data) {
            if(data.redirect) {
                window.location.href = data.redirect;
            } else {
                $('.message').hide();
                $('.message').html(data);
                $('.message').fadeIn('slow');
            }
        }
    });
});

そしてPHP

  public function do_ajax($type) {
    if($type == 'login') {
        $this->_submit_login();
    }   
}

  public function _submit_login() {
    if($this->form_validation->run('login')) {
        $data = array(
            'username' => $this->input->post('username'),
            'password' => sha1($this->input->post('password'))
        );
        $authenticate = $this->account_model->authenticate($data['username'], $data['password']);
        if($authenticate) {
            $this->session->set_flashdata('success', 'You have successfully logged in.');
            redirect('/account');
        } else {
            echo json_encode('Could not log you in, your details are incorrect.');
        }
    } else {
        echo json_encode('<ul class="errors">'.validation_errors('<li>', '</li>').'</ul>');
    }
}

私がうまくいかないアイデアはありますか?前もって感謝します。

4

1 に答える 1

0

リダイレクトについては、これを試してください:

window.location = data.redirect;
于 2012-07-19T20:13:27.787 に答える