我正在开发codeigniter的网站,并且有下载文件的设施。 我的问题是我想保留一个记录,当用户下载任何文件时,它会在数据库中插入记录以保存下载历史记录。 我已经在该按钮上调用了jquery ajax,并在href属性中调用了下载功能。 请给我一些建议,当我点击下载功能时,如何首先调用jquery函数,然后完成下载。 提前谢谢你
这是我的下载代码
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 :(得分:0)
在你的ajax配置中,有一个名为beforeSend
的回调你可以在发送请求之前使用它来执行功能。
$ajax({
/*...*/
beforeSend: function(xhr) {
//beforeSend;
},
success: function(data) {
},
error: function(error) {
}
})
你也可以在第一个电话成功时拨打第二个电话。
$ajax({
/*...*/
success: function(data) {
//secondCall
$.ajax({
/*...*/
})
},
error: function(error) {
}
})