【问题标题】:Cannot get value of text field of form which is submitted through ajax inside submit handler无法获取通过提交处理程序中的 ajax 提交的表单文本字段的值
【发布时间】:2020-06-04 05:15:59
【问题描述】:

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

这是我的 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();
}

【问题讨论】:

  • 您必须在您的 ajax 发布数据中传递表单序列化数据,例如 data: form.serialize()。请正确构建您的代码..
  • 在这一行之后 - var from_url=jQuery(form).attr('action');,请打印 from_url 里面有什么价值。我认为它是空白的,因为您没有定义它。
  • 同样在提交时,如果开发工具,您可以检查网络选项卡。它将向您显示请求提交的 URL 以及输入值。

标签: php jquery codeigniter codeigniter-3


【解决方案1】:

这可能是由于多种原因 -

  1. 设置表单方法为POST -

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

     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) {
                 }
    })
    

看看对你有没有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-29
    • 2015-03-11
    • 1970-01-01
    相关资源
    最近更新 更多