2014-09-28 21 views
0

我已經創建了一個小應用程序,您可以添加人員並將其全部列出在頁面上。我使用REST生成JSON API和jQuery來獲得結果。如何使用JQuery更新頁面的任何更改而不需要刷新?如何使用Django中的jquery實時獲取更改

all.html

<ul id="people"></ul> 

main.js

$(function(){ 
    var $people = $('#people'); 

    $.ajax({ 
     type: 'GET', 
     url: '/all/api', 
     success: function(people) { 
      $.each(people, function(i, person) { 
       $people.append('<li>name: ' + person.first_name+', last: '+ person.last_name + '</li>'); 
      }); 
     } 
    }); 
}); 

api.py

class PersonList(APIView): 
    def get(self, request, format=None): 
     people = Person.objects.all() 
     serialized_people = PersonSerializer(people, many=True) 
     return Response(serialized_people.data) 
+0

也許你應該使用websockets,其中頁面將是一個客戶端,並將監聽哪些服務器將被髮布 – coldmind 2014-09-28 18:49:54

回答

2

如果你不打算使用WebSockets和將要使用異步調用,然後您可以通過頻繁運行AJAX調用來檢查更新:

var ajax_call = function() { 
    var $people = $('#people'); 

    $.ajax({ 
     type: 'GET', 
     url: '/all/api', 
     success: function(people) { 
     $.each(people, function(i, person) { 
      $people.append('<li>name: ' + person.first_name+', last: '+ person.last_name + '</li>'); 
     }); 
     } 
    }); 
}; 

var interval = 5000; // 5 secs 
setInterval(ajax_call, interval); 

如果沒有更改,您可能需要包含'has_changed'標誌或在httpresponse中返回304(未修改)狀態,以便您可以優雅地處理非更新。您需要小心這樣的電話,因爲人們可以將頁面打開幾天。

相關問題