0

朝、

過去 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>&nbsp;&nbsp;Passwords don't match!
        </div>
        <?php } ?>
        <?php if (isset($changed)) {?>
        <div class="alert success closeEverywhere">
            <span class="icon"></span>
            <strong>Success !</strong>&nbsp;&nbsp;Password was successfully changed
        </div>
        <?php } ?>
        <div class="alert error closeEverywhere" id="alertMessage">
            <span class="icon"></span>
            <strong>Error !</strong>&nbsp;&nbsp;Password don't match!
        </div>
        <div class="alert success closeEverywhere" id="successMessage">
            <span class="icon"></span>
            <strong>Success !</strong>&nbsp;&nbsp;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');  
  }
4

1 に答える 1

1

そのjavascriptでbase_urlを定義している場所がありませんか?そうでない場合は、私が思うに、あなたのコードは正当なURLに送信されていません。base_urlはCodeIgniterPHP関数です。たとえば、次の行

$.post(base_url+'site/new_password',$('#change_password_form').serialize(),function(data) {

読む必要があります:

$.post("<?=base_url();?>site/new_password",$('#change_password_form').serialize(),function(data) {
于 2013-01-02T19:53:47.177 に答える