Xin chào bạn!
Hãy đăng ký thành viên để được cập nhật nhiều thông tin kiến thức hữu ích từ diễn đàn.
Đăng ký | Đăng nhập
Hệ thống mới thay đổi thuật toán mã hóa nên các bạn vui lòng vào Quên mật khẩu để tạo mật khẩu mới.

Kenh radio online [NEW]


#3175 21/09/2011 09:49 PM
Nhóm :
Member
Tham gia:
21-09-2011
Bài viết:
0
Lần thăm:
0

Hỏi: Về auto ajax request tới action và hiển thị trong javascript

Chào các bạn!
Mình đang có một bài toán mà chưa biết cách xử lý như thế nào. Giả sử trong database mình có bảng sản phẩm, và có trường số lượng. Khi số lượng nhỏ hơn giá trị nào đó, mình muốn hiện lên một popup thông báo là có sản phẩm sắp hết mà không phải refresh lại trang.
Mình làm như thế này!
1)  Khai báo một div ẩn khi load trang lần đầu tiên
<div id="top-link">Thông tin cảnh báo - <span id="spanShow"></span></div>
  <style type="text/css">
      #top-link  { display:none; position:fixed; right:5px; bottom:5px; color:green; font-weight:bold; text-decoration:none; border:1px solid green; background:Lightgreen; padding:10px; }
  </style>
2) Đoạn script để request dữ liệu 15 giây 1 lần
<script type="text/javascript">
      var auto_refresh = setInterval(
        function () {
            var currentDate = new Date();
            var time = currentDate.getSeconds();
            $('#spanShow').text(time);
            $('#top-link').fadeIn("slow");
        }, 15000);    // refresh every 10000 milliseconds
</script>
Hiện tại nếu mình chạy đoạn code trên, thì cứ 15 giây, cái div đó hiển thị một giá trị thời gian (giây) hiện tại. Nhưng bây giờ mình muốn từ đoạn script này gọi một action trong controller (ví dụ: action này trả ra true hoặc false là có sản phẩm sắp hết), khi đọc dữ liệu từ action đó là true, thì sẽ hiển thị cái div top-link kia ra.
Mong các bạn giúp đỡ, mình đã google nhiều và thử nhiều nhưng chưa làm được. Mình cũng mới làm quen với MVC, nên không có kinh nghiệm!
Rất cảm ơn!

#3176 22/09/2011 09:59 AM
Nhóm :
Member
Tham gia:
16-06-2010
Bài viết:
43
Lần thăm:
308
Bạn viết như trên cũng gần được rồi đó. Mình sửa lại giúp bạn chút nhé:

Ở Product Controller bạn viết thêm 1 Action:

        public ActionResult Exists()
        {

            if(/*Hàm kiểm tra sản phẩm trong database */)
            {
                return Json(new {Status = 1});    
            }
            return Json(null);


        }

Bạn viết 1 function kiểm tra sản phẩm xem còn tồn tại hay hết. Nếu hết thì trả về Status=1

Sau đó viết thêm 1 đoạn script để tự động check trên server:

setInterval(function() {

        $.getJSON('/Products/Exists/', function(data) {
            if (data.Status == "1") {

                alert('Sản phẩm đã hết');

            }
        }, 2000);

    });

Vậy là xong. Chúc bạn thành công


#3177 22/09/2011 11:08 AM
Nhóm :
Member
Tham gia:
21-09-2011
Bài viết:
0
Lần thăm:
0
Cám ơn duong_ba_ho nhé! Mình cũng làm được rồi, tuy hơi khác một chút. Có lẽ tối nay sẽ share cho mọi người (người chưa biết). Một lần nữa xin cám ơn!