Tôi đang cố gắng hoàn thành một nhiệm vụ khá đơn giản cho trang web của mình, nhưng tôi "không chắc chắn chính xác cách thực hiện. Tôi muốn người dùng xem bảng, sau đó nhấp vào , tại thời điểm đó, người dùng có thể lưu nội dung của bảng đó dưới dạng tệp csv. Yêu cầu này đôi khi có thể khá phức tạp, do đó tôi tạo trang tiến độ để cảnh báo người dùng. file csv (tôi sử dụng jQuery và PHP)Tải xuống tệp CSV bằng cách sử dụng "AJAX"
mã jQuery chạy trên nhấp chuột:.
hmis_query_csv_export: function(query_name) {
$.uiLock('<p>Query Loading.</p><img src="/images/loading.gif" />')
$.get({
url: '/php_scripts/utils/csv_export.php',
data: {query_name: query_name},
success: function(data) {
$.uiUnlock();
}
});}
PHP liên quan:
header("Content-type: text/x-csv");
header("Content-Disposition: attachment; filename=search_results.csv");
//
//Generate csv
//
echo $csvOutput
exit();
Điều này không là gửi văn bản như các file PHP, nhưng nó không tạo ra một tải. Tôi đang làm gì sai?
Cảm ơn rất nhiều về các mẹo. Tôi có thể làm điều này để làm việc rất dễ dàng, nhưng tôi tự hỏi làm thế nào tôi có thể sử dụng điều này trong khi vẫn thực hiện một khóa màn hình và hình ảnh động tiến bộ. Tôi chỉ lo lắng rằng người dùng có thể bị nhầm lẫn vì tùy thuộc vào truy vấn mà quá trình này có thể mất đến 3 hoặc 4 phút. –
Nếu mất nhiều thời gian để tạo tệp CSV, bạn có thể cần phải thay đổi hướng một chút và thay vào đó sử dụng AJAX để khởi chạy tập lệnh PHP tạo tệp đĩa tạm thời; một khi kịch bản PHP trả về (với tên tập tin) chức năng gọi lại AJAX có thể thực hiện chuyển hướng như Ast Derek hiển thị. – godheadatomic
Vì vậy, chỉnh sửa của bạn có vẻ như nó sẽ hoạt động, nhưng có vẻ như các câu lệnh đang được chạy không đồng bộ. Câu lệnh thứ ba không đợi quá trình tải xuống hoàn tất, do đó màn hình chờ xuất hiện rồi biến mất ngay lập tức. Có cách nào để buộc nó chạy đồng bộ không? –