使用zpt和ajax动态填充表格更新

问题描述:

我在金字塔中创建了一个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

你可以用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