我正在努力解决一个javascript问题,我认为这个问题源于缺乏概念性理解。我会直接潜入:
我有一个网页,我想在点击按钮时下载文件。相关的html js在这里:
// Js within html
var mypage = new MyPage();
$(document).ready(function() {
mypage.onReady();
});
document.ready在按钮上执行,这肯定有效。接下来,我的MyPage.js文件:
onReady() {
$('.my-form').on('submit', function() {
$.ajax({
type: 'GET',
url: '/my/url',
data: {
'data': JSON.stringify(my_data)
}
}).done((response) => {
window.location.href = response.msg;
}).fail(function(data) {
console.log(data)
});
return false; //relevant line
});
}
现在返回假行看起来无关紧要。但是,由于某种原因,当我把它取出时,下载失败了,并且它成功了。有人可以向我解释为什么会这样吗?如果需要,很乐意发布更多信息。
答案 0 :(得分:2)
从事件处理程序返回false将自动调用
event.stopPropagation()
和event.preventDefault()
。
答案 1 :(得分:1)
$('.my-form').on('submit', function() {
无论是故意不提交表单,还是只提交页面,只要点击按钮,页面就会刷新。
添加return false
会阻止表单或页面提交,并且AJAX调用有机会完成,window.location.href
重定向将通过。