[英]Javascript/ajax script works only if debugging point is set in developer tools
我面臨以下問題,似乎無法解決。 我們正在使用Codeigniter 3開發一個網站。為了將文件上傳到該網站,我使用了Dropzone.js。
我要實現以下目標:在上載期間,用戶有機會取消上載過程。 addRemoveLinks:是
現在,我同時將文件參數(id,名稱,大小等)保存到數據庫中。 單擊取消上傳按鈕后,上傳將停止,但是到那時,視頻參數已保存到數據庫中。 在站點上,視頻縮略圖是根據數據庫行加載的,因此取消上傳時,我想從db中刪除關聯的行。
問題是,僅當我在Chrome開發人員工具中設置調試點時,我的代碼才能工作,但是代碼的處理時間仍然很長。
如果沒有調試點,則不會刪除db行。
這是我的footer.php中的代碼
<!-- Bootstrap core JavaScript -->
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.0/jquery-ui.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<!-- JS file -->
<script src="<?php echo asset_url(); ?>js/autocomplete/jquery.easy-autocomplete.min.js"></script>
<!-- CSS file -->
<link rel="stylesheet" href="<?php echo asset_url(); ?>js/autocomplete/easy-autocomplete.css">
<!-- Tables -->
<script type="text/javascript" src="https://cdn.datatables.net/v/bs4/dt-1.10.18/datatables.min.js"></script>
<!-- Upload -->
<script src="<?php echo asset_url(); ?>js/dropzone.js"></script>
<script>
Dropzone.options.dropzonejsform = {
maxFilesize: 20000,
addRemoveLinks: true,
dictCancelUpload: "<p style =\"font-size:115%; display:block\">Cancel upload<p>",
dictRemoveFile: "",
dictDefaultMessage: "<h3>Drag'n'drop files <br> or <button type='button' class='btn btn-outline-success' value='Upload'>click here</button> to upload</h3>",
init: function() {
this.on("removedfile", function(file) {
var name = file.name;
$.ajax({
cache: false,
url: './delete2/' + name,
type: "GET",
success: function(html) {
location.reload();
}
});
});
this.on("queuecomplete", function() {
location.reload();
});
}
}
</script>
由於某種原因,如果沒有$ ajax的調試點,則該代碼不會從db中刪除。 有什么建議么?
編輯:@Alex,這是上傳和刪除功能
public function delete_video2($video_name){
$this->db->where('video_name', $video_name);
$this->db->delete('videos');
}
// Add Video
public function add_video()
{
$this->load->helper('url');
//allowed file types
$arr_file_types = ['video/mp4', 'video/avi', 'video/mov', 'video/3gp', 'video/mpeg'];
// Target Path
$target_dir = "./assets/upload/";
// Assigining Random Name
$File_Name = $_FILES["file"]["name"]; // Get file name
$File_Size = $_FILES["file"]["size"]; // Get file name
$File_Ext = substr($File_Name, strrpos($File_Name, '.')); // Get file extention
$Random_Number = rand(0, 9999999999); // Random number to be added to name.
$NewFileName = $Random_Number.$File_Ext; // New file name
// Uploading name to dataase
move_uploaded_file($_FILES['file']['tmp_name'], $target_dir.$NewFileName);
// echo "true";
// die();
$user = $this->ion_auth->user()->row();
$id = $user->id;
$data = array(
'reference_id' => $File_Ext,
'user_id' => $id,
'video_name' => $File_Name,
'video_url' => $NewFileName,
'video_size' => $File_Size,
);
return $this->db->insert('videos', $data);
}
視圖的一部分
<!-- Button to Open the Modal -->
<button type="button" class="btn btn-outline-upload" style="font-size:20px;" data-toggle="modal" data-target="#myModal">
<i class="fa fa-plus-square"></i> Upload New Video
</button>
<!-- Upload Modal -->
<div class="modal" id="myModal">
<div class="modal-dialog-index" style="max-width:350px">
<div class="modal-content">
<!--Dropzone upload form-->
<?php $attributes = array('id' => 'dropzonejsform', 'class' => 'dropzone', 'enctype' => 'multipart/form-data' ); ?>
<?php echo form_open("upload", $attributes);?>
<?php echo form_close();?>
</div>
</div>
</div>
您的刪除請求可能是在其他處理(例如文件上傳)以某種方式阻止它的時候發生的,並且通過添加斷點,您將ajax調用延遲到該處理完成之后-這就是為什么您只會看到它正常工作。
在發出刪除請求之前,請確保數據庫已完成寫入等操作,並且處於刪除條目的狀態。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.