如何通过jquery.ajax发送一个或多个数据

时间:2018-03-21 08:29:04

标签: javascript php jquery html codeigniter

我从stackoverflow复制了这个代码,当我通过它上传多个文件时,它运行正常。但我不能发送其他参数。它只上传文件,但不发送其他参数。我尝试了不同的方式,但我无法发送数据。 我的代码在下面,但我不发送NewDir的第二个参数:foldername到我的php文件

这是我的javascript代码///////////

function OnProgress(event, position, total, percentComplete){    
    //Progress bar
    console.log(total);
    $('#pb').width(percentComplete + '%'); //update progressbar percent complete
    $('#pt').html(percentComplete + '%'); //update status text
  }
$(document).ready(function(){
 $('#files').change(function(){
  var files = $('#files')[0].files;
  var foldername = $('#Reciter_Name').val();
  var error = '';
  var form_data = new FormData();
  var bar = $('.bar');
  var status = $('#status');
  var percent = $('.percent');
  if(foldername == ''){
    alert("Your Don't enter any name");
    return false;
  }
  for(var count = 0; count<files.length; count++)
  {
   var name = files[count].name;
   var extension = name.split('.').pop().toLowerCase();
   if(jQuery.inArray(extension, ['mp3']) == -1)
   {
    error += "Invalid " + count + " Mp3 File"
   }
   else
   {
    form_data.append("files[]", files[count]);
   }
  }
  if(error == '')
  {
   $.ajax({
    url:"<?php echo base_url(); ?>index.php/admin/upload", //base_url() 

return http://localhost/tutorial/codeigniter/
        method:"POST",
        data:{form_data,NewDir:foldername},
        contentType:false,
        cache:false,
        processData:false,
        beforeSend:function()
        {
         // $('#uploaded_files').html("<label class='text-success'>Uploading...</label>");
        status.empty();
        var percentVal = '0%';
        bar.width(percentVal);
        percent.html(percentVal);
        },
        uploadProgress: function(event, position, total, percentComplete) {
            var percentVal = percentComplete + '%';
            bar.width(percentVal);
            percent.html(percentVal);
        },
        success:function(data)
        {
         $('#uploaded_files').html(data);
         $('#files').val('');
        }
       })
      }
      else
      {
       alert(error);
      }
     });
    });

这是我在下面给出的PHP代码///////////

function upload()
 {
    sleep(3);
  if($_FILES["files"]["name"] != '')
  {
   $output = '';
   $config["upload_path"] = './uploads/audio/';
   $config["allowed_types"] = 'mp3';
   $config["overwrite"] = TRUE;
   $this->load->library('upload', $config);
   $this->upload->initialize($config);
   for($count = 0; $count<count($_FILES["files"]["name"]); $count++)
   {
    $_FILES["file"]["name"] = $_FILES["files"]["name"][$count];
    $_FILES["file"]["type"] = $_FILES["files"]["type"][$count];
    $_FILES["file"]["tmp_name"] = $_FILES["files"]["tmp_name"][$count];
    $_FILES["file"]["error"] = $_FILES["files"]["error"][$count];
    $_FILES["file"]["size"] = $_FILES["files"]["size"][$count];
    if($this->upload->do_upload('file'))
    {
     $data = $this->upload->data();
     $output .= '
      <input type="hidden" name="url[]" value="'.base_url().'uploads/audio/'.$data["file_name"].'" />
      <input type="hidden" name="surahname[]" value="'.$data["file_name"].'" />
      <a href="'.base_url().'uploads/audio/'.$data["file_name"].'" target="_blank">'.$data["file_name"].'</a>
     ';
    }
   }    
  }
  echo $output;
 }

所以请告诉我如何从php文件传递数据。 ////////////////////////////////////////////////// ///////////////

1 个答案:

答案 0 :(得分:0)

你只需要添加

form_data.append('NewDir',foldername); 

在将form_data分配给ajax数据变量之前