我有一个使用Sammy进行简单客户端路由的应用程序。
其中一个页面有一个“下载Pdf”按钮,需要执行POST来获取和下载pdf文档(我知道,不是非常重要,但由于数据量很大,它必须是POST我正在提交)。它使用动态创建,填充和提交<form>
元素的旧技巧来实现此目的。
一切正常,除了我可以在控制台中看到一个错误来自sammy我找不到路线。请注意,这不是一条路线,甚至不是Sammy应该处理的动词。
Sammy(function initializeClientRouting(app) {
app.get('#/', show('#default'));
app.get('#/test', show('#test'));
function show(selector) { return function() {
$('section').slideUp();
$(selector).slideDown();
}; }
}).run('#/');
$('button').click(function() {
var form = $("<form method=post action: 'http://www.google.com'>").hide();
$('<textarea name=q>').text("search text").appendTo(form);
form.appendTo('body').submit().remove();
});
有谁知道如何防止此错误?这是Sammy的错误吗?
答案 0 :(得分:1)
这是sammy&amp; amp; JQuery行为(bug?)。当您按照放置它的方式动态生成时,表单标记将呈现为
<form www.google.com'="" 'http:="" action:="" method="post">
这将尝试POST到当前页面,这可能类似于
http://blah/# or http://blah/#/test
出于某种原因,Sammy将因为hashtag被触发,没有找到配置的POST并记录错误。
摆弄你的榜样,对我有用的是:
var form = $("<form>");
form.attr('method', 'post');
form.attr('action', 'http://www.google.com');
$('<textarea name=q>').text("search text").appendTo(form);
form.appendTo('body').submit().remove();
这似乎生成了正确的HTML并删除了Sammy错误。