2013-05-14 48 views
1

我在金字塔中創建了一個webproject,我想每隔幾個小時更新一個表格。我已經決定使用阿賈克斯,但我堅持的東西。使用zpt和ajax動態填充表格更新

在客戶端,我用下面的代碼:

function update() 
    { 
    var variable = 'variable '; 
    $.ajax({ 
     type: "POST", 
     url: "/diagnose_voorstel_get_data/${DosierID}", 
     dataType: "text", 
     data: variable , 
     success: function (msg) { 
     alert(JSON.stringify(msg));   
     }, 
     error: function(){ 
      alert(msg + 'error'); 
      }      
     }); 
    } 

金字塔邊:

@view_config(route_name='diagnose_voorstel_get_data', xhr=True, renderer='string')  
def diagnose_voorstel_get_data(request): 
    dosierid = request.matchdict['dosierid'] 
    dosieridsplit = dosierid.split  
    Diagnoses = DBSession.query(Diagnose).filter(and_(Diagnose.code_arg == str(dosieridsplit[0]), Diagnose.year_registr == str(dosieridsplit[1]), Diagnose.period_registr == str(dosieridsplit[2]), Diagnose.staynum == str(dosieridsplit[3]), Diagnose.order_spec == str(dosieridsplit[4])))  
    return {'Diagnoses ' : Diagnoses } 

現在我想用TAL把這個數據的表內與ZPT:重複聲明。 我知道如何在頁面加載時將這些數據放在表格中,但我不知道如何將這些數據與ajax結合起來。

anny1可以幫我解決這個問題嗎?非常感謝。

+1

AJAX是一種瀏覽器端技術。您將使用JavaScript構建表格,而不是使用ZPT構建表格。 ZPT在服務器端運行,並且在瀏覽器加載結果時已經完成。 – 2013-05-14 16:53:04

+0

因此,使用ajax調用不可能使用新數據重新加載頁面? 是的,我這樣做,但我只是與親的檢查。 Thx爲答案。 – GertV 2013-05-14 19:06:22

+0

您也可以使用AJAX重新加載頁面,並使用ZPT構建響應服務器端。但與其他答案相比,這並沒有什麼特別之處。 – 2013-05-14 19:12:50

回答

1

你可以用AJAX做任何事情,你是什麼意思「沒有可能」?一旦你清楚地看到什麼運行在哪裏以什麼順序運行,事情會變得更加清潔 - 正如Martijn Pieters指出的那樣,瀏覽器中沒有ZPT,服務器上也沒有AJAX,所以問題的標題沒有多大意義。

一些選項有:

  • 克倫特發送一個AJAX請求,服務器做它的服務器端的東西,在AJAX調用成功處理程序的客戶端重新加載使用類似window.location.search='ts=' + some_timestamp_to_invalidate_cache整個頁面。整個頁面將重新加載新的數據 - 儘管它幾乎完全像一個正常的表單提交,使用AJAX就沒有太大意義。

  • 客戶端發送一個AJAX請求,服務器返回一個HTML 片段與ZPT渲染的客戶端,然後附加到某個元素在頁面上的AJAX成功處理程序:

    function update() 
    { 
        var variable = 'variable '; 
        $.post("/diagnose_voorstel_get_data/${DosierID}") 
         .done(function (data) {' 
          $('#mytable tbody').append(data); 
         }); 
    } 
    
  • 客戶端發送一個AJAX請求,服務器返回一個JSON對象,然後使用其中一個客戶端模板引擎在客戶端上呈現該JSON對象。如果您在客戶端上呈現整個應用程序並且服務器將所有數據提供爲JSON,則這可能只有意義。

+0

這正是我們在上述評論中得出的結論。 但感謝您以比評論更體面的方式指出它。 – GertV 2013-05-14 19:53:04

+0

如果可能,我想使用zpt,但我認爲這不會是可行的,所以我只是檢查。 我打算使用ajax調用一個json並以這種方式更新我的表。 – GertV 2013-05-14 19:58:48

+0

@GertV:如果服務器返回使用zpt呈現的HTML片段,使用zpt生成附加行並將它們附加到表中使用ajax調用是非常有可能的,正如我在答案的第二個選項中所示。 – Sergey 2013-05-14 20:48:49