2016-05-20 4 views
0

У меня есть страница при загрузке, вызывает сценарий jQuery Document.ready, который, используя сегодняшнюю дату в качестве ввода, отправляет запрос AJAX скрипту PHP для запроса базы данных для любых «записей», с этой датой. Если он находит что-то, они добавляются в массив, затем JSON закодирован и возвращается в сценарий jQuery, который затем в цикле for выплескивает <div> за «запись» с использованием шаблонов JSRender. Эти <div> s живут внутри формы.JSRender и AJAX и PHP

Существует кнопка для создания новой «записи», которая при нажатии просто клонирует последнюю «запись», очищает ее, дает массивы ввода (имя ввода = «TI [new1] []») новый индекс (бит 'new1') и добавляет его под последний (в форме). Когда форма отправляется, выполняется другой запрос AJAX для записи/обновления базы данных.

То, что я не могу понять, это то, как перезагрузить форму, когда была сделана новая запись, так что она становится текущей плюс новые записи с их правильными идентификаторами, так как в настоящее время форма отправляется, но, конечно, не обновляется , поэтому записи по-прежнему имеют идентификатор «newx», а не тот, который они теперь назначили при записи в базу данных.

<form> 
    <div id="empty-for-jsrender-output"> 
    </div> 
    <script (template for jsrender)></script> 

</form> 

<script src="get-entries"></script> 


// get-scripts 
calls ajax with var for current date 
returns json array 
for each nested array, calls jsrender script, which spits out a div block per entry within #empty-for-jsrender-output 

Так как же я сделать форму или # пустой-для-jsrender-вывод перезарядка, как это делает, когда страница загружается первой в первый раз после того, как я отправить форму с новой записью?

К сожалению, редактировать, забыл добавить, что я попробовал это в моей Submit въездного сценария в расслоении плотной секции ajax.done:

$.getScript("assets/js/getEntries.js"); 

, чтобы попытаться запустить тот же сценарий снова, что бежит, когда страница фактически перезагружается (что работает). Но все это делает пустым div ... он не заселяет его снова.

ответ

0

Я не буду пытаться предлагать подробные сведения о том, как это сделать - поскольку это связано с конкретными выборами приложений.

Но для общего подхода я бы рекомендовал использовать JsViews, а не только JsRender, поэтому вы можете получать инкрементные обновления пользовательского интерфейса благодаря наблюдаемым изменениям данных и привязке данных.

Затем для сценария AJAX, отличный подход заключается в использовании новой Составитель просмотра моделей особенность в JsRender/JsViews, и вызвать метод merge() на ваши данные, когда вы получаете обновленные данные в формате JSON вернулся из второй и последующие запросы AJAX.

Вот некоторые ссылки на документацию: