从函数返回结果并使用另一个函数php

时间:2015-06-15 09:20:27

标签: php jquery ajax

以下是fileupload的代码,

我想要的是函数返回文件路径然后文件路径,我需要在sendemail函数中使用,

public function add_attachments($ticket_id)
{
            $config['upload_path'] = './uploads/attach/'.$attach_id;
            $config['allowed_types'] = 'gif|jpg|png|jpeg|doc|pdf';
            $config['max_size']    = '1024000000';

            $this->load->library('upload', $config);
            if ( ! $this->upload->do_upload())
            {
                $error = array('error' => $this->upload->display_errors()); 
            }
            else
            {
                $data = $this->upload->data();
                $file_name = $data['file_name'];
            }
          return $file_name;
            //echo base_url().'uploads/attach/' .$file_name;

}

现在上面的函数将在$ file_name中返回, 我希望在另一个函数中使用相同的值,例如send_email()

这两个功能将由Jquery在HTML中同时执行,意味着上传附件并发送带附件的电子邮件。

以下是Jquery组件,

上传和提交的功能,

$(".dropzone").dropzone({ 
paramName : 'userfile',
autoProcessQueue: false,
//maxFilesize : 0.1,
url: "<?php echo base_url()?>index.php/upload/add_attachments/"+<?php echo $attach->attach_id; ?>,
init: function() {

    var myDropzone = this;

     // Here's the change from enyo's tutorial...

        $("#ticketreply_fm").submit(function(e) {
            e.preventDefault();
            e.stopPropagation();
            myDropzone.processQueue();
            sendreply();
            }
        );

sendreply()函数将使用AJAX返回发送附加数据,

谢谢高级,

2 个答案:

答案 0 :(得分:0)

我不能清楚地告诉你,但如果我认为你的问题是你的问题,那么

  1. 设置名为private $file_name;

  2. 的私有媒体资源
  3. 然后在添加附件方法中使用:

    public function add_attachments($ticket_id) {
        $config['upload_path'] = './uploads/attach/'.$attach_id;
        $config['allowed_types'] = 'gif|jpg|png|jpeg|doc|pdf';
        $config['max_size']    = '1024000000';
    
        $this->load->library('upload', $config);
        if ( ! $this->upload->do_upload())
        {
            $error = array('error' => $this->upload->display_errors()); 
        }
        else
        {
            $data = $this->upload->data();
            $this->file_name = $data['file_name'];
        }
      return $this->file_name;
        //echo base_url().'uploads/attach/' .$file_name;
    
  4. }

    1. 创建一个公共方法来获取文件名,如

      public function get_file_name() {
         return $this->file_name;
      }
      
    2. 因此,您现在可以使用get_file_name()方法获取文件名的值。

    3. 我希望它有所帮助。

答案 1 :(得分:0)

来自Dropzone Docs ...有一个名为queuecomplete的事件,可以通过invoque触发你需要的第二个功能......
类似的东西:

// use this to get the attr you need, like the name.
myDropzone.on("queuecomplete", function(file, xhr, formData) {
  console.log("file", file);
  console.log("xhr", xhr);
  console.log("formData", formData);
});

那就像是:

$("#ticketreply_fm").submit(function(e) {
    e.preventDefault();
    e.stopPropagation();
    myDropzone.processQueue();
    myDropzone.on("queuecomplete", function(file, xhr, formData) {
        // make the call here to sendmail() function with `$file.name` var...
        sendreply();
    });
});

我之前从未使用Dropzone ..所以我只是根据文档进行猜测。
希望它有所帮助