さらなる開発から、javascript を無効にして (Codeigniter コードを使用して) 完全に動作する AJAX および CI メールフォームがあり、AJAX を使用するといくつかのバグがあります。
不足しているボックスがあり、送信を押すと、エラー mmessage-great がポップアップ表示されますが、正しく入力して送信すると、受信ボックスに受信したメールがまだ正しいにもかかわらず、エラーが表示されます。これは本当に私を悩ませています私のAJAXコードの何かとして、コントローラーに何かが欠けていると思います。
別の質問: AJAX フォームでは、個人的なエラー/成功メッセージが投稿されています。CI $success と echo validation_errors(); をエコーする方法はありますか? これで、彼らは同じですか?
コードは私がこれまでに持っているものです:
私のコントローラーを見るには、このリンクに従ってください: Codeigniter AJAX email validation
見る
<h1>Contact</h1>
<div id="contact">
<?php
//This is loaded in the view as it wont be used in the other pages
$this->load->helper('form');
echo form_open('contact/send_email');
//success message if passed validation checks
echo '<div id="success">';
echo $success;
echo '</div>';
// empty div for error messages (ajax)
echo '<div id="errors">';
// empty div for error messages (php)
if(validation_errors() != ""){
echo '<h3>Please correct the following errors:</h3>';
echo validation_errors();
}
echo '</div>';
echo form_label('Name: ', 'name');
$data = array (
'name' => 'name',
'id' => 'name',
'value' => set_value('name')
);
echo form_input($data);
echo form_label('Email: ', 'email');
$data = array (
'name' => 'email',
'id' => 'email',
'value' =>set_value('email')
);
echo form_input($data);
echo form_label('Message: ', 'message');
$data = array (
'name' => 'message',
'id' => 'message',
'value' =>set_value('message')
);
echo form_textarea($data);
?>
<br />
<?php
echo form_submit('submit', 'Send');
echo form_close();
?>
AJAX
<script type="text/javascript">
$(function() {
$('form').submit(function() {
// get the form values
var form_data = {
name: $('#name').val(),
email: $('#email').val(),
message: $('#message').val()
};
// send the form data to the controller
$.ajax({
url: "<?php echo site_url('contact/send_email'); ?>",
type: "POST",
data: $(form_data).serialize(),
success: function(msg) {
if(msg.validate)
{
$('form').prepend('<div id ="success">Success</div>');
$('#success').fadeOut(5000);
}else
$('form').prepend('<div id ="errors">Error</div>');
$('#errors').fadeOut(5000);
}
});
// prevents from refreshing the page
return false;
});
});
</script>