我刚开始使用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>发布于 2011-04-19 23:26:48
您的post路由#/filter实际上并不会导致浏览器地址栏中的散列更改,而是执行对post路由的静默提交。因此,当您点击后退按钮时,它将返回到启动的#/路由之前的上一个路由,无论是什么路由。将它们重定向回post路由也没有意义,因为我们不希望用户重复发布表单。
您可以做的是在内存中保留一个变量,并在每次返回主路由时引用它。例如:
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("#/");
});https://stackoverflow.com/questions/4583396
复制相似问题