Форма Sammy.js очищается при нажатии кнопки назад - PullRequest
2 голосов
/ 03 января 2011

Я новичок в использовании 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>

1 Ответ

2 голосов
/ 19 апреля 2011

Ваш почтовый маршрут #/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("#/");
});
...