Рендеринг фрагмента или раздела шаблона HTML после успешной публикации AJAX - PullRequest
0 голосов
/ 19 марта 2012

Я пытаюсь реализовать функцию, и я не знаю, как это сделать.Мой проект использует Django для реализации серверной логики и шаблонов, а также библиотеку JavaScript Google Closure для внешнего интерфейса.

Мой пример использования приведен ниже:

Я использую значение "rate" для вычисления общей суммыдля многочисленных лиц.Сущности отображаются в табличном формате следующим образом:

<!-- I need to reload this table again.  -->
<table class = "striped" ....>
 <thead>
   <tr>
      <th>Entity</th>
      <th>Amount (USD)</th>
      <th>Rate (%)</th>
    </tr>
  </thead>
  <tbody>
     {% for entity in entities %}
     <tr>
        <td>{{ entity.name }}</td>
        <td>${{ entity.total }}</td>
        <td>{{ entity.rate }}</td>
     </tr>
    {% endfor %}
  </tbody>
 </table>

Курс доступен в таблице базы данных для расчета общей суммы.Но я должен сделать следующий сценарий "что, если" ; Какой будет общая сумма, если "скорость" была изменена?

У меня есть поле ввода, которое принимает новую скорость следующим образом:

<label for="Updated Rate">
<input type=number id="updatedRate" name="updatedRate" value="0" />
<input type="button" value="Update Rate" />
<input type="button" value="Recalculate Entities"/>
<input type="reset" value="Reset rate and Recalculate"/>

Я сохраняю обновлениеоценивает значение для локального хранилища Windows, когда пользователь нажимает кнопку Update Rate , а затем.Если пользователь нажимает кнопку Пересчитать сущности , то я хотел бы сделать AJAX-запрос к серверной части, чтобы пересчитать обновленное значение и заново отобразить таблицу с обновленными значениями.Если пользователь сбрасывает значение скорости, то пересчитанные значения должны быть равны. В этом случае используемая скорость будет извлечена из базы данных, и таблица должна быть обработана повторно.

Я знаю, как сделать запрос AJAX.на сервер, чтобы пересчитать данные. Но я не знаю, как перерисовать таблицу, если «скорость» была обновлена ​​или сброшена.

1 Ответ

2 голосов
/ 19 марта 2012

Вам нужен способ идентифицировать сущность, для которой вы рассчитываете.Что-то вроде:

{% for entity in entities %}
 <tr data-id="{{ entity.id }}">
    <td>{{ entity.name }}</td>
    <td class="total">${{ entity.total }}</td>
    <td>{{ entity.rate }}</td>
 </tr>
{% endfor %}

Затем в обратном вызове ajax замените сумму:

$.ajax({
  url: 'someurl',
  success: function(json) {
    $('tr[data-id=' + json.id + '] td.total').text(json.total);
  }
});

Конечно, фактически структура возвращаемых данных будет отличаться.Но я думаю, что у вас есть базовая структура.

Это поможет?

...