【问题标题】:Upload file using AJAX in CodeIgniter Still executed even the value is null/undefined在 CodeIgniter 中使用 AJAX 上传文件即使值为 null/undefined 仍然执行
【发布时间】:2017-06-07 04:25:41
【问题描述】:

如果文件尚未输入,我想执行另一个 ajax。但它仍然发布表单操作。

这是我的视图代码:

<form method="POST" id="quiz_file" action="<?php echo site_url('home/upload_quiz/' . $kelas);?>" enctype="multipart/form-data">
   <input name="filequiz" id="filequiz" type="file" />
</form>

这是我的 JS:

$('#submitquiz').on('click', function(event) {
  var inputFile = $('input[name=filequiz]');
  document.getElementById('submitquiz').disabled = true;
  var fileToUpload = inputFile[0].files[0];
  // make sure there is file to upload
  if (undefined != fileToUpload) 
  {
     var uploadURI = $('#quiz_file').attr('action');
     var formData = new FormData();
     formData.append("file", fileToUpload);
     alert('if');
     $.ajax({
        url: uploadURI,
        type: 'post',
        data: 
        {
            formData : formData,
            asid : asid_quiz,
            value : cmbValue
        },
        processData: false,
        contentType: false,
        success: function(data) 
        {

        }
    });
 }
 else
 {
   alert('else');
   $.ajax(
   {        
     type: 'POST',
     url:'<?php echo site_url("home/assignment_score"); ?>',
     data: 
     { 
        asid : asid_quiz,
        value : cmbvalue,
        kelas : <?php echo $kelas;?>,
        dataType:"JSON"
     },
     success: function(data) 
     {
        console.log('asdasd' + data);
        alert('Quiz score submitted');
     }
 });

当我刚刚执行它时,它会显示警报消息“else”。但它仍然执行表单操作的上传操作。

这怎么可能发生?如何停止执行上传操作并在“其他”端执行另一个 ajax 请求?

【问题讨论】:

  • 你能用jquery.form插件吗,malsup.com/jquery/form/#file-upload
  • 如果#submitquiztype="submit" 的输入,那么您需要防止提交按钮的“默认”操作......即event.preventDefault()
  • 你明白我的意思吗?

标签: javascript php jquery ajax codeigniter


【解决方案1】:

如果您的提交测验按钮类型是提交,您必须防止点击提交事件,或者您可以将其更改为输入类型按钮。

如果您使用 ajax 发送数据,我也更喜欢您,那么您必须使用输入按钮而不是提交

$('#submitquiz').on('click', function(event) {
event.preventDefault();

【讨论】:

  • 用那个方法后还能继续吗?
  • 是的,您可以在此方法下方添加您的方法,或者只是更改按钮类型
  • 我的意思是在我使用 event.preventDefault 之后,我想再次继续执行操作。怎么办?
  • 为此你可以使用 $( "#quiz_file" ).submit();提交表格。确保 id 是表单 id,因为我们提交表单
猜你喜欢
  • 2020-07-12
  • 1970-01-01
  • 1970-01-01
  • 2012-05-25
  • 2012-07-18
  • 2022-01-13
  • 1970-01-01
  • 2018-06-08
  • 1970-01-01
相关资源
最近更新 更多