我有以下html标记,其中操作是sammyjs路由代码中定义的路径之一:
<form id="loginform" action="#/login" method="post" class="form-horizontal">
<!-- input & hidden elements -->
<!-- submit button -->
</form>
如果上面的视图是通过网址加载的,例如&#34; localhost:xxx / Account / Login&#34; ,当我提交上述表单时,sammyjs会记录它无法解决的错误找到路线:
[Thu Apr 24 2014 13:52:39 GMT+0100 (GMT Daylight Time)] #shell 404 Not Found get /Account/Login#/login
Error {message: "404 Not Found get /Account/Login#/login ", stack: "Error↵ at Object.Sammy.Application.$.extend.err…/localhost:36141/Scripts/Vendor/require.js:132:23"}
message: "404 Not Found get /Account/Login#/login "
stack: "Error↵ at Object.Sammy.Application.$.extend.error (http://localhost:36141/Scripts/Vendor/sammy-0.7.4.js:1346:47)↵ at Object.Sammy.Application.$.extend.notFound (http://localhost:36141/Scripts/Vendor/sammy-0.7.4.js:1335:22)↵ at Object.Sammy.Application.$.extend.runRoute (http://localhost:36141/Scripts/Vendor/sammy-0.7.4.js:1179:21)↵ at Object.Sammy.Application.$.extend._checkLocation (http://localhost:36141/Scripts/Vendor/sammy-0.7.4.js:1365:25)↵ at Object.Sammy.Application.$.extend.run (http://localhost:36141/Scripts/Vendor/sammy-0.7.4.js:971:12)↵ at http://localhost:36141/Scripts/App/common.js:36:19↵ at Object.context.execCb (http://localhost:36141/Scripts/Vendor/require.js:1650:33)↵ at Object.Module.check (http://localhost:36141/Scripts/Vendor/require.js:866:51)↵ at Object.<anonymous> (http://localhost:36141/Scripts/Vendor/require.js:1113:34)↵ at http://localhost:36141/Scripts/Vendor/require.js:132:23"
__proto__: d
我无法理解为什么sammy会寻找&#34; / Account / Login#/ login&#34; ,因为我的表单操作设置为& #34;#/登录&#34;
我还尝试更改下面错误提及的路径路径,例如从&#34;#/ login&#34; 到&#34; /帐户/登录#/ login&#34; ,但我再次收到与上面链接中提到的相同的错误。
this.post('#/login', function (context) {
//process
});
其他链接或表单标签也是如此。我想要使用的哈希标记后缀为网址中的任何内容,例如&#34; /帐户/登录#{/ any_hash_tag}&#34; 。 我该怎么做才能解决这个问题?
但是,如果视图是通过URL加载的,那么一切正常,例如&#34; localhost:xxx /&#34; ,没有其他路由参数。
如果有什么事情我做错了会很高兴。
干杯
答案 0 :(得分:0)
这就是URL Fragments的工作方式。
Sammy希望路线从域名开始,然后是斜线
链接到#[anything]
的锚标记会将该网址片段附加到当前视图的末尾。
你可以通过几种方式解决这个问题:
/Account/Login#/login
这样的路线,但它看起来很乱,看起来有两个路由器。这没什么好玩的。像#/account/login
一样使用Sammy。 /#/login
。这将重置到Web根目录的基本路由,然后将片段附加到末尾。