Vì vậy, tôi có một bảng kéo thông tin từ một cơ sở dữ liệu và tôi đã tự hỏi làm thế nào tôi có thể làm cho nó làm mới thông tin của nó mà không cần tải lại toàn bộ trang.Làm mới một bảng với jQuery/Ajax cứ sau 5 giây
Trả lời
Đây là một tùy chọn khác để bạn sử dụng. Giải pháp này đang sử dụng một số IIFE được ưu tiên hơn setInterval. Bạn có thể đọc thêm về IIFE tại liên kết ở trên.
JAVASCRIPT:
var $results = $('#results'),
loadInterval = 5000;
(function loader() {
$.get('script.php', function(html){
$results.hide(200, function() {
$results.empty();
$results.html(html);
$results.show(200, function() {
setTimeout(loader, loadInterval);
});
});
});
})();
HTML:
<div id="results"></div>
Xin chào, nhưng tôi thực sự không biết chức năng làm mới bảng. –
@Etienne Dupuis Tôi nghĩ đưa ra một ví dụ tốt về cách lấy dữ liệu. –
+1 tôi sau đó: P hah! –
Bạn nên có một trang mà trả lại thông tin và lấy dữ liệu sử dụng Ajax/jQuery.
<div class="result"></div>
setInterval(function() {
$.get('test.php', function(data) {
$('.result').html(data);
});
}, 5000);
"Vấn đề" với giải pháp này là nó không bắt đầu hẹn giờ khi tải xong. Nói cách khác, nếu yêu cầu của bạn mất hơn 5 giây để trả lại, bạn sẽ có các yêu cầu ajax chồng lên nhau. Tôi đề nghị sử dụng '.abort()' trước khi bắt đầu một cuộc gọi mới. – Dutchie432
setTimeout(function(){
jqueryFunction(Args);
},100);
sẽ làm việc ...
100 = 100 mili giây
Bạn sẽ cần một trang getTable.php
hiển thị bảng của bạn, và không có gì khác: không có tiêu đề, footers, vv
PHP (getTable.php) - đây có thể là bất kỳ mã phía máy chủ nào (asp, html, v.v ..)
<?php
echo '<table><tr><td>TEST</td></tr></table>';
?>
Sau đó, trong JS, bạn có thể dễ dàng làm mới bảng bằng cách sử dụng load()
phương pháp:
HTML
<div id="tableHolder"></div>
JS
<script type="text/javascript">
$(document).ready(function(){
refreshTable();
});
function refreshTable(){
$('#tableHolder').load('getTable.php', function(){
setTimeout(refreshTable, 5000);
});
}
</script>
Cảm ơn bạn rất nhiều, thậm chí có thể sử dụng khi sử dụng ASP (vì nó là trường hợp của tôi) – ArcDare
Rất vui được trợ giúp !! – Dutchie432
Trả lời tốt. Để giúp làm rõ, 1000 ms = 1 giây. Vì vậy: setTimeout (refreshTable, 5000); - làm mới bảng mỗi 5 giây. –
Sử dụng ajax , ví dụ sau là trong jQuery:
$(function() {
var prevAjaxReturned = true;
var xhr = null;
setInterval(function() {
if(prevAjaxReturned) {
prevAjaxReturned = false;
} else if(xhr) {
xhr.abort();
}
xhr = $.ajax({
type: "GET",
data: "v1="+v1+"&v2="+v2,
url: "location/of/server/script.php",
success: function(html) {
// html is a string of all output of the server script.
$("#element").html(html);
prevAjaxReturned = true;
}
});
}, 5000);
});
Hàm thành công giả định rằng tập lệnh máy chủ của bạn xuất ra html mà bạn muốn thay thế trong phần tử có id 'element'.
"Vấn đề" với giải pháp này là nó không bắt đầu hẹn giờ khi tải xong. Nói cách khác, nếu yêu cầu của bạn mất hơn 5 giây để trả lại, bạn sẽ có các yêu cầu ajax chồng lên nhau. Tôi đề nghị sử dụng .abort() trước khi bắt đầu một cuộc gọi mới. – Dutchie432
@Dutchie chính xác. Tôi đã cập nhật câu trả lời để phản ánh một giải pháp mạnh mẽ hơn. OP và những người khác quan tâm nên đọc câu trả lời này: http://stackoverflow.com/a/446626/697370 cho các giới hạn về 'abort' –
Hoặc, bạn có thể sử dụng câu trả lời của tôi bên dưới, bắt đầu tự động hẹn giờ khi kết thúc ajax. – Dutchie432
Các công trình sau đây với JQuery Datatables 1,10
`var tableName;
//Set AJAX Refresh interval.
$(function() {
setReloadInterval(10); //Refresh every 10 seconds.
}
//Because function takes seconds we * 1000 to convert seconds to milliseconds.
function setReloadInterval(reloadTime) {
if(reloadTime > 0)
internalId = setInterval("reloadTable()", (reloadTime * 1000);
}
//Auto Refresh JQuery DataTable
function reloadTable() {
tableName.ajax.reload();
}
//Table defined...
$(document).ready(function() {
tableName = $('#tableName').DataTable({
"sAjaxSource": "/someUrl",
});`
- 1. Cách cập nhật tiện ích theo định kỳ, cứ sau 5 giây
- 2. Công việc Cron - để chạy cứ 5 giây
- 3. Thay đổi màu của thông báo LED cứ sau 5 giây
- 4. Chạy mã nhất định cứ sau n giây
- 5. Phương thức gọi sau 5 mili giây
- 6. Phần tử autohide jQuery sau 5 giây
- 7. Gọi hàm javascript sau 5 giây bấm phím cuối cùng
- 8. Cách tải lại JSON bằng AJAX cứ sau 10 giây
- 9. Làm thế nào để tải lại img cứ 5 giây bằng javascript?
- 10. Làm thế nào tôi có thể gọi một chức năng cứ sau 3 giây trong 15 giây?
- 11. Crontab cứ 5 phút
- 12. Tự động gửi biểu mẫu sau 5 giây
- 13. Bánh xe quay vòng CSS dừng sau 5 giây?
- 14. Làm mới div với dữ liệu php sau mỗi 10 giây bằng cách sử dụng jQuery
- 15. Chuyển hướng một trang sang một trang khác trong 5 giây sau đó chuyển hướng lại
- 16. Làm thế nào để cập nhật bảng với activeandroid sau khi thêm một cột mới
- 17. làm cho văn bản div biến mất sau 5 giây sử dụng jquery?
- 18. 5 viết mỗi giây cho một nhóm đối tượng
- 19. Làm cách nào để làm mới trình duyệt sau mỗi giây X bằng javascript?
- 20. java: chạy một hàm sau một số giây cụ thể
- 21. Làm mới Bảng Pivot với Apache POI
- 22. Entity Framework 5 - Ngay lập tức làm mới DbContext sau khi lưu thay đổi
- 23. Làm cách nào để chạy một số javascript sau khi bảng cập nhật làm mới?
- 24. Chức năng chạy 5 giây sau khi widget pygtk được hiển thị
- 25. Chạy tập lệnh PHP cứ 5 phút một lần và tránh điều kiện cuộc đua
- 26. Gọi một chức năng cứ sau 10 phút
- 27. Tạo chế độ xem vật hóa làm mới sau mỗi 5 phút
- 28. tại sao nền flash trắng ie8 cho một phần nhỏ của giây khi làm mới?
- 29. Sau khi tạo tệp python exe với cx_freeze tệp không làm bất cứ điều gì
- 30. Ẩn/Xóa thẻ sau X giây với jquery
Câu trả lời là trong câu hỏi: thêm một kịch bản tải lại dữ liệu bảng sử dụng AJAX mỗi 5 giây. Google cho hàm JavaScript setTimeout. –
Làm cách nào để thiết lập chương trình phụ trợ của bạn? Bạn có dự định gọi một kịch bản như 'getData.php? StartID = 1 & endID = 10' loại điều? – Justin808