从进一步的发展来看,我有一个 AJAX 和 CI 电子邮件表单,它可以在禁用 javascript(使用 Codeigniter 代码)的情况下完美运行,并且在使用 AJAX 时存在一些错误。
当缺少框并按提交时,它会弹出错误mmessage-great,但是当正确填写并提交时,即使正确并且我仍然在收件箱中收到电子邮件,它仍然会发布错误。这真的让我很烦因为它在我的 AJAX 代码中,我认为我的控制器中缺少一些东西。
另一个问题:在 AJAX 表单上,它发布了个人错误/成功消息——有没有办法回显 CI $success 和回显验证错误();在这方面他们是一样的吗?
代码是我到目前为止所拥有的:
要查看我的控制器,请点击此链接: Codeigniter AJAX 电子邮件验证
看法
<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>