例子中,我用的是顯示機器上的進程信息的表格,獲取不同的機器的進程信息時,更新這個展示信息的表格,如下:
當我在輸入框中輸入ip時,我希望只是更新這個表格,頁面其他部分不變,實現方式如下:
1、在原頁面中設置這個表格的id為pstable
<table class="table table-striped" id="pstable"> <thead> <tr> <th>user</th> <th>pid</th> <th>cmd</th> </tr> </thead> <tbody> {% for ps in info.ps_data %} <tr> {% for item in ps %} <td>{{ item }}</td> {% endfor %} </tr> {% endfor %} </tbody> </table>
2、實現js
<script type="text/javascript"> $(document).ready(function(){ $("#gobtn").click(function(){ var ip=$("#ip").val(); //獲取輸入框中的ip $.post("/process/",{'hostip':ip}, //post函數到后端 function(data,status){ //回調函數 $("#pstable").html(data); //將id為pstable的標簽的html替換為返回的data $("#ip").val(ip) //將輸入框的值改為查詢的ip }); }); });
3、view函數
def process_view(request): hostip = request.POST.get('hostip') logger.debug("host:%s" % hostip) if hostip is None: ps_data = GetHostPs('192.168.163.128') info = {'username':request.user,'ps_data':ps_data} template = 'process.html' #return render(request,'process.html',{"info":info}) elif hostip: ps_data = GetHostPs(hostip) info = {'username':request.user,'ps_data':ps_data} template = 'pstable.html' #return render(request,'pstable.html',{"info":info}) else: ps_data = GetHostPs('192.168.163.128') info = {'username':request.user,'ps_data':ps_data} template = 'pstable.html' return render(request,template,{"info":info})
4、pstable.html 在這個html定義好要根據ip獲取到進程信息后的html代碼
<thead> <tr> <th>user</th> <th>pid</th> <th>cmd</th> </tr> </thead> <tbody> {% for ps in info.ps_data %} <tr> {% for item in ps %} <td>{{ item }}</td> {% endfor %} </tr> {% endfor %} <tbody>
當點擊按鈕查詢指定ip的進程信息時,process()會判斷這個ip的存在,如果這個ip存在,會將pstable.html保存到js函數中的data參數,然后js參數會調用回調函數,將id為pstable的tag的html替換為參數data保存的html,即pstable.html,從而局部修改頁面,展示進程信息。
以上這篇django js實現部分頁面刷新的示例代碼就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。
新聞熱點
疑難解答