jQuery ajaxを使用して送信するフォームがあり、フォームデータを使用して必要なその他のタスクを検証および実行するために、送信と呼ばれるコントローラー関数に送信されます。ユーザー名に小文字と数字のみが含まれていないのに、フォーム検証ライブラリにエラーが表示されない理由を調べようとしています。
$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean|strtolower');
フォーム送信後のPOST値:
username TestingUSER
編集:
私の知る限り、それはphpサーバー側に正しく到達します。
PHP:
public function submit()
{
$output_status = 'Notice';
$output_title = 'Not Processed';
$output_message = 'The request was unprocessed!';
$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean|strtolower');
$this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean');
$this->form_validation->set_rules('remember', 'Remember Me', 'trim|xss_clean|integer');
if ($this->form_validation->run() == TRUE)
{
}
else
{
$output_status = 'Error';
$output_title = 'Form Not Validated';
$output_message = validation_errors();
}
echo json_encode(array('output_status' => $output_status, 'output_title' => $output_title, 'output_message' => $output_message));
}
編集2:
シェイクの答えに基づいています。「フィールド名に対応するエラーメッセージにアクセスできません」という応答が返されます。タイトルに対してフォームが検証されていないと表示されるため、メッセージは機能しません。
public function check_username($str)
{
if (preg_match('#[0-9]#', $str) && preg_match('#[a-z]#', $str))
{
return TRUE;
}
$this->form_validation->set_message('username', 'This is not have an accepted value!');
return FALSE;
}
編集3:
私がやりたいのは、検証エラーはあるが、pnotify応答には特定のエラーがないことを報告してもらうことです。ただし、フォーム要素の下に特定のエラーを表示したいのですが。
jQueryコード:
ログインフォーム: