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>');
}
}
私がうまくいかないアイデアはありますか?前もって感謝します。