我刚开始使用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>
答案 0 :(得分:2)
您的帖子路由#/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("#/");
});