Динамически заполнять таблицу, используя 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.

Другие вопросы по тегам