私はPHP Codeigniterフレームワークを初めて使用しています。私はリンクを使用しているページを設計しています。リンクをクリックするとjquery関数が呼び出され、jqueryによってフォームが送信されます。私はサーバ側のバリデーションのためにcodeigniterフォームのバリデーションメソッドを使用していましたが、私はクライアント側のバリデーションを無効にしました。PHP CodeigniterフォームはJQueryを使用して送信します
問題は、このプロセスでフォームがjqueryを介して送信されるときに、コード署名フォームの検証メソッドが機能していないことです。
しかし、フォームを送信するために送信ボタンを使用している場合、codeigniterフォームの検証メソッドは完全に機能します。
jqueryを使用してフォームを送信し、codeigniterフォームの検証方法を使用する必要がある場合は、どうすればよいか教えてください。
見つけてください以下のコード:
ログインフォーム:
<?php echo validation_errors(); ?>
<form name="login-form" id="login-form" method="post" action="<?php echo base_url();?>index.php/login/login_form" >
<H2>Login</H2>
<div id="login-box-name">
Email:
</div>
<div id="login-box-field">
<input name="user-name" id="user-name" class="form-login" title="Please Enter Correct User Name" value="" size="30" maxlength="2048" />
</div>
<div id="login-box-name">
Password:
</div>
<div id="login-box-field">
<input name="password" id="password" type="password" class="form-login" title="Please Enter Correct Password" value="" size="30" maxlength="2048" />
</div>
<br />
<span class="login-box-options">
<input type="checkbox" name="1" value="1" title="Want this computer to remember you!!"> Remember Me <a href="#" id="login-div-change">Forgot password?</a>
</span>
<br />
<br />
<a href="" id="login-submit">
<img src="<?php echo base_url();?>assets/images/login-btn.png" width="110" height="40" style="margin-left:90px;" />
</a>
<input type="submit" name="submit" id="submit" value="Submit" />
</form>
jqueryの機能 "リンク" をクリックの上にフォームを送信するには:
$("#login-submit").click(function() { $('#login-form').submit(); return false; });
コントローラ機能:
public function login_form() { $this->load->helper(array('form', 'url')); $this->load->library('form_validation'); $data['title'] = 'Log In'; $data['errorMessage'] = ''; $this->form_validation->set_rules('user-name', 'Email', 'required'); $this->form_validation->set_rules('password', 'Password', 'required'); if ($this->form_validation->run() == FALSE) { $this->load->view('templates/header', $data); $this->load->view('login', $data); $this->load->view('templates/footer'); } else { $this->load->view('templates/header', $data); $this->load->view('templates/menu'); $this->load->view('index', $data); $this->load->view('templates/footer'); } }
ここで、フォームの[送信]ボタンをクリックすると、ユーザー名とパスワードのフィールドにコード署名の検証が行われます。しかし、id = "login-submit"のリンクをクリックすると、jquery関数が呼び出され、フォームが送信されます。しかし、今回はユーザー名とパスワードのフィールドでcodeigniterの検証は機能しません。
私はリンクを介してフォームを提出する必要があり、コード署名検証機能がこのために機能するはずです。事前に
おかげで.....
...あなたはjQueryのためのコントローラで同じ機能を呼び出していると、デフォルトのアクションを提出しますか? – snaderss
DUDE!私は完全にjqueryとCIを愛し、一日中それを使用し、私は大いに役立つ何かを教えてあげよう! [this jQuery Plugin](http://jquery.malsup.com/form/)をチェックすると、100倍も簡単になります。また、PHP側から何かを見る必要があるときはいつでも 'print_r'を使うことを忘れないでください。かなり追加する – SpYk3HH
私はあなたに[このページをブックマークする](http:// codeigniter。com/user_guide /)を使用して頻繁に使用すると、左上の 'Table of Contents 'タブをクリックして開くと、(chromeは私が使用しているものを使用します)ctrl + fを使用してあなたが探しているものを入力して、すぐに簡単にリンクを見つけてください。 – SpYk3HH