Форма Sammy.js очищается при нажатии кнопки «Назад»

Я новичок в использовании sammy.js. Я хочу опубликовать форму и получить результаты через ajax. Я использую sammy.js, потому что, когда пользователь нажимает на результат, он будет перенаправлен на новую страницу, а когда он захочет снова вернуться на страницу формы, форма будет удалена, если я не использую что-то вроде sammy. js.

Проблема в том, что он не работает. Если я вернусь с помощью «кнопки назад», форма все равно будет очищена.

это мой код:

var app = $.sammy(function()
{
 this.get("#/", function()
 {
 });

 this.post("#/filter", function()
 {
  fields = this.params;
  this.app.swap();
  $("#get_result").html(fields);
 });
});

$(function()
{
 app.run("#/");
});

Это моя форма:

<form action="#/filter" method="post" id="searchForm">
<input type="text" name="test"/>
<input type="submit" name="submit"/>
</form>

person Emil    schedule 03.01.2011    source источник


Ответы (1)


Ваш почтовый маршрут #/filter на самом деле не вызывает изменения хэша в адресной строке браузера, вместо этого он выполняет автоматическую отправку на маршрут #/filter. Поэтому, когда вы нажимаете кнопку «Назад», он возвращается к вашему предыдущему маршруту до инициированного маршрута #/, каким бы он ни был. Также не имеет смысла перенаправлять их обратно на маршрут публикации, потому что мы не хотим, чтобы пользователь дважды публиковал форму.

Что вы можете сделать, так это сохранить переменную в памяти и возвращаться к ней каждый раз, когда вы возвращаетесь к основному маршруту. Например:

var app = $.sammy(function()
{
 var lastSearch = '';
 this.get("#/", function()
 {
   $('#searchForm input:first').val(lastSearch);
 });

 this.post("#/filter", function()
 {
  lastSearch = $('#searchForm input:first').val();
  fields = this.params;
  this.app.swap();
  $("#get_result").html(fields);
 });
});

$(function()
{
 app.run("#/");
});
person DragonDTG    schedule 19.04.2011