2017-04-20 128 views
1

我正在codeigniter中開發網站,並且有一個下載文件的工具。 我的問題是,我想保留一條記錄,當用戶下載任何文檔時,它會在數據庫中插入記錄以保留下載歷史記錄。 我已經調用jQuery的ajax在該按鈕單擊和href屬性的下載功能。 請給我建議,當我點擊下載功能並在下載完成後,如何首先調用jquery函數。 預先感謝您在調用下載函數之前調用ajax函數

這是我下載的代碼

public function download_b_question_paper($fileName = NULL) 
{ 
    $this->load->helper('download'); //load helper 
    if ($fileName) 
    { 
     $file = realpath ("b_question") . "\\" . $fileName;    
     if (file_exists ($file))// check file exists  
     {     
      $data = file_get_contents($file);// get file content 
      force_download ($fileName, $data);//force download 
     } 
    } 
} 

這是在視圖中創建鏈接使用AJAX

$(".link").click(function(){ 
    var id=$(this).data("data1"); 
    $.ajax({ 
     type : 'POST', 
     url : '<?php echo base_url();?>index.php/Faculty_controller/get_all_bmaterial', 
     data : { 'id' : id }, 
     success : function(data) 
     { 
      $(".tbl").html(""); 
      recs=$.parseJSON(data); 
      head='<tr><td>Sr. No</td><td align=center><br><h4>Material Name</td><td colspan="2"><center>Action</center></td></tr>'; 
      $(".tbl").append(head); 
      $.each(recs,function(i,v) 
      { 
       a=i+1; 
       r='<tr><td><br><center>'+a+'</td><td><br>'+v.file_name+'</td><td><br><center><a class="dwnld btn btnd btn-danger" href="<?php echo base_url();?>index.php/Student_controller/download_bachelor_material/'+v.file_name+'"/"'+v.materialno+'" data-data1='+v.materialno+' data-data2='+v.file_name+' data-content="Download this material" data-placement="bottom" data-trigger="hover"><i class="fa fa-download"></i></a></td></tr>'; 
       $(".tbl").append(r); 
       $('a').tooltip({ });       
      });//end of foreach 
     }//end of success 
    });//end of ajax 
});//end of link click function 

這是我想之前調用Ajax來下載下載功能叫做

$("a").click(function(){ 
    alert('hello'); 
    $.ajax({  
     type : 'POST', 
     data : { 'subkey' : id }, 
     url : "<?php echo base_url()?>index.php/Studnet_Controller/b_mat_activity", 
     success : function(data) 
     { 
      alert('hello'); 
     } 
    }); 
}); 

回答

0

在你的ajax config中,有一個叫在您發送請求之前,您可以使用它來執行函數beforeSend

$ajax({ 
    /*...*/ 
    beforeSend: function(xhr) { 
     //beforeSend; 
    }, 
    success: function(data) { 

    }, 
    error: function(error) { 

    } 
}) 

您也可以在第一次調用成功時調用第二次調用。

$ajax({ 
    /*...*/ 
    success: function(data) { 
    //secondCall 
     $.ajax({ 
      /*...*/ 
     }) 
    }, 
    error: function(error) { 

    } 
}) 
相關問題