Проблема с ajax при обработке формы с использованием codeigniter - PullRequest
1 голос
/ 11 февраля 2011

У меня проблема при попытке отправить форму через ajax.Если я ввожу только имя и отправляю его, это выдает мне ошибку с фамилией.Если я ввожу только фамилию, это дает мне ошибку в имени.Это то, что я ожидаю.

Теперь, если я ввожу как имя, так и фамилию и отправляю форму, в firebug выдает ошибку «msg is null» в консоли.Как сообщение может быть пустым, когда отправляются как имя, так и фамилия, но не когда имя или фамилия отправляются отдельно?

Моя форма содержит следующие данные:

<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

$.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>');
      }
   }
});

Мой контроллер, который обрабатывает ajax

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
   {

   }    
}

1 Ответ

4 голосов
/ 11 февраля 2011

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

Так что да, данные, возвращаемые вашей функции JavaScript, будут нулевыми

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

Надеюсь, что помогает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...