2014-09-28 16 views
7

Trong dropzone.js, có một sự kiện error, tuy nhiên tôi không thể tìm thấy bất kỳ tài liệu nào về cách kích hoạt tính năng này từ PHP.Làm cách nào để kích hoạt sự kiện lỗi trong DropZone bằng PHP?

Tôi đã thử gửi các phản hồi tiêu đề() khác nhau từ PHP bao gồm, 404, 500, 503, v.v. nhưng sự kiện này chưa được kích hoạt.

Điều tôi muốn làm là máy chủ kiểm tra xem liệu nó có hợp lệ hay không, và nếu nó không hợp lệ, tôi loại bỏ tệp và lý tưởng - trả lại lỗi để dropzone có thể phản hồi tương ứng.

Từ phía javascript, tôi đã thử như sau:

.on("complete", function(file,response) { 
    console.log(response); 
} 

.on("error", function(file,response) { 
    console.log(response); 
} 

.on("success", function(file,response) { 
    console.log(response); 
} 

... Tuy nhiên, response là undefined, ngay cả khi tôi trở về JSON hoặc văn bản đơn giản từ kịch bản php. Nó không xuất hiện dropzone.js hỗ trợ nhận được phản hồi máy chủ đầy đủ hoặc ít nhất nó không nâng nó lên trình xử lý tùy chỉnh. Nơi duy nhất tôi đã thấy bất kỳ tài liệu tham khảo để đi qua một param thứ hai về các sự kiện là ở đây trên SO trong câu hỏi khác mà không trực tiếp hỏi câu hỏi này.

Phải có cách để nhận phản hồi của máy chủ (như tôi đã làm trong quá khứ với javascript trình tải lên khác như jQuery POST và jqUpload, v.v.). Nó có vẻ khá ngớ ngẩn mà tôi không thể kích hoạt một lệnh để báo hiệu tải lên không thành công - ngay cả khi việc chuyển tập tin đã hoàn thành - vì nó vẫn cần phải chờ đợi trên kịch bản cho một phản ứng. --- Điều này có nghĩa là tôi có thể nhìn thấy một thứ gì đó, đó là lý do tại sao tôi gọi hỗ trợ vì tài liệu của họ cho thấy hoàn toàn không có gì liên quan đến cách một máy chủ phản hồi --- ngôn ngữ không liên quan, tuy nhiên trong trường hợp của tôi, tôi đang sử dụng PHP.

Xin cảm ơn trước.

Trả lời

11
<?php 
header('HTTP/1.1 500 Internal Server Error'); 
header('Content-type: text/plain'); 
$msg = "Your error message here."; 
exit($msg); 
?> 

LƯU Ý: Không chuyển hướng người dùng khác nó sẽ không chạy "exit ($ msg)"

<script type="text/javascript"> 
      $(document).ready(function() { 

Dropzone.options.dropzone = { 

    maxFilesize: 10, 
    init: function() { 
     this.on("uploadprogress", function(file, progress) { 
     console.log("File progress", progress); 
     }); 
    } 

}; 
      }); 
     </script> 

Thats nó !. Nó sẽ hoạt động

1

Nếu bạn gửi bất kỳ tiêu đề phản hồi không phải 200 nào, Dropzone sẽ phát hiện lỗi đó và phát hiện sự kiện error(file, response). Thông báo thông tin lỗi có thể đi vào như JSON và có thể truy cập thông qua response.your_msg_variable

Lưu ý rằng chỉ cần in response sẽ không hiển thị bất cứ điều gì hữu ích vì nó là một đối tượng, bạn có thể sử dụng console.log(JSON.stringify(responseText, null, 4));

này khá sẽ in các đối tượng tối đa 4 cấp độ xuống

Các vấn đề liên quan