У меня возникла проблема при попытке отправить форму через ajax. Если я ввешу только первое имя и отправлю его, это даст мне ошибку на фамилию. Если я ввожу только фамилию, это дает мне ошибку при первом имени. Это то, чего я ожидаю.Проблема с ajax при обработке формы с использованием codeigniter
Теперь, если я ввожу имя и фамилию и отправлю форму, в firebug это дает мне ошибку «msg is null» в консоли. Как может msg быть пустым, когда передаются как первое, так и последнее имя, но не при отправке имени или фамилии отдельно?
Моя форма содержит следующие:
<p class="inline-medium-label"><span class="relative">
<?php echo form_error('firstName'); ?>
<label for="firstName" class="required">First Name</label>
<input type="text" class="full-width" name="firstName" value="<?php echo set_value('firstName'); ?>" /><br />
</span></p>
<p class="inline-medium-label"><span class="relative">
<?php echo form_error('lastName'); ?>
<label for="lastName" class="required">Last Name</label>
<input type="text" class="full-width" name="lastName" value="<?php echo set_value('lastName'); ?>" /><br />
</span></p>
Мой Аякса вызов
$.ajax({
url: 'addMember',
type: 'post',
data: data,
dataType: 'json',
success: function(msg) {
if(msg.validate === false) { // if there are validation errors...
if(msg.firstName != '') {
$('input[name="firstName"]').addClass('error');
$('input[name="firstName"]').after('<span class="check-error"></span>');
}
if(msg.lastName != '') {
$('input[name="lastName"]').addClass('error');
$('input[name="lastName"]').after('<span class="check-error"></span>');
}
} else {
$('div.modal-content').append('<h2>User Added Successfully!</h2>');
}
}
});
Мой контроллер, который обрабатывает Аякса
function addMember()
{
$data['sess'] = $this->session;
// validates and sanitizes the user's input
$this->form_validation->set_rules('firstName', 'First Name', 'trim|required|max_length[30]|xss_clean');
$this->form_validation->set_rules('lastName', 'Last Name', 'trim|required|max_length[30]|xss_clean');
// if there are validation errors...
if($this->form_validation->run() == FALSE)
{
if($this->input->post('ajax')) // if the form was submitted with ajax...
{
echo json_encode(array('validate'=>FALSE,
'firstName'=>form_error('firstName'),
'lastName'=>form_error('lastName')
));
}
else // else if NOT submitted with ajax...
{
echo 'Ajax not used';
}
}
else // if there are NO validation errors
{
}
}
Я знал, что это было что-то легко! Спасибо за вашу помощь, я потратил часы на эту проблему. – Catfish