Динамически заполнять таблицу, используя zpt и ajax в качестве обновления
Я создаю веб-проект в пирамиде, где я хотел бы обновлять таблицу каждые несколько секунд. Я уже решил использовать 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 }
Теперь я хочу поместить эти данные в таблицу с zpt с помощью оператора tal:repeat. Я знаю, как использовать, чтобы поместить эти данные в таблицу при загрузке страницы, но я не знаю, как совместить это с ajax.
Может ли anny1 помочь мне с этой проблемой? спасибо заранее.
1 ответ
С AJAX вы можете делать практически все, что вы имеете в виду "нет возможности"? Все становится намного чище, когда вы ясно видите, что и где происходит, и в каком порядке - как отмечает Мартейн Питерс, в браузере нет ZPT и на сервере нет AJAX, поэтому название вопроса не имеет особого смысла.
Некоторые из вариантов:
clent отправляет запрос 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.