2010-12-28 49 views
37

Tôi đã tự hỏi liệu có ai đó có thể giúp tôi không. Tôi có một trang php mà echos ra hàng từ một cơ sở dữ liệu. Tôi muốn gọi nó qua jquery/ajax cứ 30 giây một lần. Nhưng tôi cũng muốn có thể gọi trang bất kỳ lúc nào để nếu tôi thêm bản ghi thông qua biểu mẫu, khi biểu mẫu gửi tôi muốn trang qua được gọi tới ajax để cập nhật kết quả ngay lập tức. Bất cứ ai có thể chỉ cho tôi đi đúng hướng hoặc cung cấp một số mã cơ sở để tôi có thể cố gắng tìm ra điều này? Vẫn còn rất mới để jquery/ajax.Cuộc gọi Jquery/Ajax với bộ hẹn giờ

Trả lời

67

Nếu bạn muốn thiết lập một cái gì đó trên một bộ đếm thời gian, bạn có thể sử dụng JavaScript của setTimeout hoặc setInterval phương pháp:

setTimeout (expression, timeout); 
setInterval (expression, interval); 

đâu expression là một chức năng và timeoutinterval là các số nguyên trong mili giây. setTimeout chạy bộ đếm thời gian một lần và chạy expression một lần trong khi setInterval sẽ chạy expression mỗi lần vượt qua interval.

Vì vậy, trong trường hợp của bạn nó sẽ làm việc như thế này:

setInterval(function() { 
    //call $.ajax here 
}, 5000); //5 seconds 

Theo như Ajax đi, xem jQuery ajax() method. Nếu bạn chạy một khoảng thời gian, không có gì ngăn bạn gọi cùng một số ajax() từ các vị trí khác trong mã của bạn.

+0

Cảm ơn bạn đã trả lời! Vì vậy, câu nói của bạn nếu tôi sử dụng đoạn mã trên để làm mới cuộc gọi ajax cứ 5 giây một lần thì trên cùng một trang, tôi có một biểu mẫu mà người đó điền vào, sau khi thực hiện thêm bản ghi, tôi có thể gọi cùng hàm setInterval ở trên và nó sẽ không có 2 trường hợp của hàm đó chạy cùng một lúc? – John

+8

Vì vậy, những gì bạn muốn là cho một khoảng thời gian để chạy mỗi 30 giây * cho đến khi * người dùng bắt đầu gửi biểu mẫu ... và sau đó tạo một khoảng thời gian mới sau đó? Điều đó cũng có thể. 'setInterval()' trả về một số nguyên là ID của khoảng thời gian. Nếu bạn lưu trữ ID đó trong một biến, sau đó bạn có thể gọi 'clearInterval (id)' sẽ dừng tiến trình. Sau đó, bạn có thể khôi phục lại cuộc gọi 'setInterval()' sau khi bạn đã hoàn tất việc gửi biểu mẫu ajax của mình. – treeface

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