php - 使用 codeigniter 处理表单时出现 ajax 问题

标签 php jquery ajax codeigniter webforms

我在尝试通过 ajax 提交表单时遇到问题。如果我只输入名字并提交,则会出现姓氏错误。如果我只输入姓氏,则会出现名字错误。这就是我所期望的。

现在,如果我输入名字和姓氏并提交表单,在 Firebug 中,它会在控制台中显示错误“msg 为空”。为什么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调用

$.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的 Controller

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
   {

   }    
}

最佳答案

这只是因为在您的 else 子句中(当数据验证时)您没有执行任何操作。

所以,是的,返回到 JavaScript 函数的数据将为 null

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

希望有帮助

关于php - 使用 codeigniter 处理表单时出现 ajax 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4962749/

相关文章:

ajax - 如何通过使用Ajax在Grails中将复杂对象作为参数传递来调用 Controller ?

php - 每个订单项的 WooCommerce 优惠券代码

PHP 条件和回显 HTML

javascript - 在 Asp.net 中的 iframe 中显示 PDF 的特定页面

jquery - Select2 在移动设备上友好

javascript - 从ajax请求调用的php文件中获取变量

php - Laravel 5.8 : How to resolve auth()->user() inside Global Scope's apply method?

php - mySQL 数据库更新时的动态计算

javascript - 添加新的 Observable 到由 ko.mapping.fromJS 映射的 ObservableArray

AJAX 请求同步与异步