2011-02-10 2 views
1

У меня возникла проблема при попытке отправить форму через 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 
    { 

    }  
} 

ответ

4

Ну это просто потому, что в вашем еще пункте (когда данные проверяются), вы ничего не делаете.

Так что да, возвращаемых данные в ваш яваскрипте функции будет нулевым

else // if there are NO validation errors 
    { 
     //You should output something here 
    } 

Надежда, что помогает

+0

Я знал, что это было что-то легко! Спасибо за вашу помощь, я потратил часы на эту проблему. – Catfish

Смежные вопросы