朝、
過去 4 日間、頭と目を酷使してきましたが、なぜこれが機能しないのかわかりません。基本的には単純なパスワード変更スクリプトであり、ajax なしで完全に実行されます。しかし、ajaxでレイヤー化すると、認識されないようで、理由がわかりません。優秀な技術者の 1 人が道を教えてくれるかもしれません。
ただ確認するため。それがajaxリクエストであることを整理していないようで、送信ボタンを押すたびにページをリロードし続けるだけです
フォーム
<form action="<?php echo site_url('site/new_password'); ?>" method="post" class="box validate" id="change_password_form">
<div class="header">
<h2>Change Password</h2>
</div>
<div class="content">
<?php if (isset($no_match)) {?>
<div class="alert error closeEverywhere">
<span class="icon"></span>
<strong>Error !</strong> Passwords don't match!
</div>
<?php } ?>
<?php if (isset($changed)) {?>
<div class="alert success closeEverywhere">
<span class="icon"></span>
<strong>Success !</strong> Password was successfully changed
</div>
<?php } ?>
<div class="alert error closeEverywhere" id="alertMessage">
<span class="icon"></span>
<strong>Error !</strong> Password don't match!
</div>
<div class="alert success closeEverywhere" id="successMessage">
<span class="icon"></span>
<strong>Success !</strong> Password was successfully changed
</div>
<!-- The form -->
<div class="form-box">
<div class="row">
<label for="change_pw">
<strong>Password</strong>
<small></small>
</label>
<div>
<input tabindex=1 type="password" class="required noerror" name="change_pw" id="change_pw" />
<?php echo form_error('change_pw','<label class="error" for="change_pw" generated="true">','</label>'); ?>
</div>
</div>
<div class="row">
<label for="change_pw_conf">
<strong>Again</strong>
<small>Password Confirmation</small>
</label>
<div>
<input tabindex=2 type="password" class="required noerror" name="change_pw_conf" id="change_pw_conf" />
<?php echo form_error('change_pw_conf','<label class="error" for="change_pw_conf" generated="true">','</label>'); ?>
</div>
</div>
</div><!-- End of .form-box -->
</div><!-- End of .content -->
<div class="actions">
<div class="left">
</div>
<div class="right">
<input tabindex=3 type="submit" value="Change Password" name="change_btn" id="change_btn" />
</div>
</div><!-- End of .actions -->
</form>
そしてAJAXセクション
$(document).ready(function () {
$('#login_form').on('submit',function() {
$.post(base_url+'site/login',$('#login_form').serialize(),function(data) {
if(!data || data.status !=1 )
{
showError();
return false;
}
setTimeout( "window.location.href='"+base_url+"site/new_password'", 1000 );
},'json');
return false;
});
$('#change_password_form').on('submit',function() {
$.post(base_url+'site/new_password',$('#change_password_form').serialize(),function(data) {
if(!data || data.status !=1 )
{
showError();
return false;
}
alert('Success');
showSuccess();
setTimeout( "window.location.href='"+base_url+"member_section'", 1000 );
},'json');
return false;
});
function showError() {
$('#alertMessage').slideDown(500);
}
function showSuccess() {
$('#successMessage').slideDown(500);
}
});
最後にコントローラーメソッド
function new_password()
{
if ($this->input->is_ajax_request())
{
$return_arr['status'] = 0;
echo json_encode($return_arr); // return value
exit();
}
$this->load->view('site/new_password_view');
}