CodeIgniter と AJAX の組み合わせに問題があります。サインアップフォームがあります。私が欲しいのは、ユーザーがホームページのサインアップボタンをクリックすると、ポップアップでサインアップフォームが表示されることです。彼がフォームに間違った詳細を入力すると、ポップアップ自体に、あなたの詳細が無効であることを示すプロンプトが表示されます。エラーを表示するために新しいページにリダイレクトしてはなりません。そのため、bpopup を使用してフォームをポップアップさせ、Ajax リクエストを作成していますが、form_validation を実行できません。少し混乱しています。ユーザーがフォーム検証に合格しない場合、ビューがロードされているため、HTML ドキュメントがユーザーに警告されます。ビューをロードしないと、ログインページが表示されません。view を直接ロードする場合、パスワードは 6 文字にする必要があるなど、ユーザーの個々のエラーをどのように表示しますか。これが私のコードです:
私のログインビュー:
<html>
<head>
<title>Sign In</title>
<script type="text/javascript">
var frm = $('form');
frm.submit(function () {
$("#status").empty();
$.ajax({
type: frm.attr('method'),
url: frm.attr('action'),
data: frm.serialize(),
success: function (data) {
if (data == "invalid") {
$('#status').html("Invalid Login Details");
}
else if(data == "valid")
{
$('#status').html("Login successful");
setTimeout(function(){
location.reload();
},600);
}
else
{
$('#status').html("Your Account is not Activated");
}
}
});
return false;
});
</script>
</head>
<body>
<div class="Header">
<h3>Sign In </h3>
</div>
<div id="status"></div>
<div class="main">
<?php echo form_open('xyz/signin'); //Renders the form element and adds extra functionality like Adds a hidden CSFR prevention field.?>
<h5>Email</h5> // For the time being I have remove echo form_error.
<input type="text" name="email" value="<?php echo set_value('email'); ?>" size="25"/>
<h5>Password *</h5> // For the time being I have remove echo form_error.
<input type="password" name="password" size="25"/>
<div><input type="submit" value="Submit" "/></div>
</form>
</div>
</body>
</html>
そして、これが xyz コントローラーのサインイン機能です:
public function signin()
{
$this->load->helper(array('form','url'));
$this->load->library('form_validation');
$config = array(
array(
'field' => 'email',
'label' => 'Email Address',
'rules' => 'trim|required|valid_email|xss_clean'
),
array(
'field' => 'password',
'label' => 'Password',
'rules' => 'trim|required|xss_clean'
)
);
$this->form_validation->set_rules($config);
if($this->form_validation->run() == FALSE) /
{
$this->load->view('pinflag/login.php');
}
else //format of form is correct
{
$email = $this->input->post('email');
$password = md5($this->input->post('password'));
$data = array(
'email' => $email,
'password' => $password
);
$result = $this->user_model->get_users($data);
if($result->num_rows == 1) //login details are correct
{
$result = $result->result_array();
if($result[0]['status'] == 0)
{
echo "notActivated";
}
else
{
$this->session->set_userdata('id',$result[0]['id']);
$this->session->set_userdata('name',$result[0]['fname']);
echo "valid";
}
}
else //when user enter invalid login details
{
echo "invalid";
}
}
}
申し訳ありませんが、ここにコードを貼り付けたときにインデントがめちゃくちゃになりました。