使用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可以帮我解决这个问题吗?非常感谢。
答
你可以用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,则这可能只有意义。
AJAX是一种浏览器端技术。您将使用JavaScript构建表格,而不是使用ZPT构建表格。 ZPT在服务器端运行,并且在浏览器加载结果时已经完成。 – 2013-05-14 16:53:04
因此,使用ajax调用不可能使用新数据重新加载页面? 是的,我这样做,但我只是与亲的检查。 Thx为答案。 – GertV 2013-05-14 19:06:22
您也可以使用AJAX重新加载页面,并使用ZPT构建响应服务器端。但与其他答案相比,这并没有什么特别之处。 – 2013-05-14 19:12:50