我正在金字塔中创建一个webproject,我想在每隔几个小时更新一个表。我已经决定使用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:repeat语句将此数据放入zpt表中。 我知道如何在页面加载时将这些数据放在表中,但我不知道如何将它与ajax结合起来。
anny1可以帮我解决这个问题吗?谢谢你。
答案 0 :(得分:1)
你可以用AJAX做任何事情,你的意思是“没有可能性”?一旦你清楚地看到什么运行在哪里以及以什么顺序运行,事情变得更加清洁 - 正如Martijn Pieters所指出的那样,浏览器中没有ZPT并且服务器上没有AJAX,所以问题的标题没有多大意义。
有些选项是:
clent发送一个AJAX请求,服务器执行其服务器端的东西,在AJAX调用成功处理程序中,客户端使用window.location.search='ts=' + some_timestamp_to_invalidate_cache
之类的东西重新加载整个页面。整个页面将重新加载新数据 - 虽然它的工作方式几乎与普通表单提交完全一样,但使用AJAX却没有多大意义。
客户端发送一个AJAX请求,服务器返回一个用ZPT呈现的HTML 片段,然后客户端在AJAX成功处理程序中附加到页面上的某个元素:
function update()
{
var variable = 'variable ';
$.post("/diagnose_voorstel_get_data/${DosierID}")
.done(function (data) {'
$('#mytable tbody').append(data);
});
}
客户端发送一个AJAX请求,服务器返回一个JSON对象,然后使用其中一个客户端模板引擎在客户端上呈现该对象。这可能只有在客户端上呈现整个应用程序并且服务器以JSON提供所有数据时才有意义。