无法获取通过 ajax 在提交处理程序中提交的表单文本字段的值

Cannot get value of text field of form which is submitted through ajax inside submit handler

我正在尝试获取已通过 ajax 提交的文本框的值,但是当我尝试在控制器方法中获取其值时,它 return 什么也没有。

这是我的AJAX函数和控制器方法:

  jQuery("#frm_xyz").validate({
      rules: {
          otp: {
              required: true
          },
      ....
      ....
      submitHandler: function(form,event) {
          event.preventDefault();
          var from_url=jQuery(form).attr('action');
          jQuery.ajax({
              url: from_url, 
              type: "POST",             
              data: new FormData(document.getElementById("frm_xyz")),
              cache: false,             
              processData: false,      
              success: function(data) {
              }
          });
      }
  });

HTML:

 <?php echo form_open('verify-verification-otp',array('id'=>"frm_xyz")); ?> 
     <input type="text" name="otp" placeholder="OTP" class="form-control" />
     <br />  
     <input type="submit" name="submit" id="btn_verify_contact" class="btn btn-info" value="Verify OTP" />  
 <?php echo form_close(); ?>

但是当我尝试在控制器中获取文本框的值时,我没有得到该值!

PHP:

public function verify_otp()
{
    $otp = $this->input->post('otp');
    print_r($otp);
    die();
}

这可能是由于多种原因造成的 -

  1. 将表单方法设置为POST -

    <?php 
       echo form_open('verify-verification-otp',array('id'=>"frm_xyz", 'method'=>"POST"));
    ?>
    
  2. 在发送 formData 时将 contentType 设置为 false 或 jquery 默认值将覆盖它。

     jQuery.ajax({
            url: from_url,
            type: "POST",
            data: new FormData(document.getElementById("frm_xyz")),
            cache: false,
            processData: false,
            contentType: false, 
            success: function(data) {
                     }
        })
    
  3. 您不需要 formData,因为您没有发送任何文件,只需使用 serialize 你应该可以开始了。 Reference

    jQuery.ajax({
        url: from_url,
        type: "POST",
        data: $('#frm_xyz').serialize(),
        cache: false,
        dataType: 'JSON',
        success: function(data) {
                 }
    })
    

看看对你有没有帮助。