如果没有看似无关的返回函数,Javascript下载无效

时间:2017-11-16 23:21:38

标签: javascript jquery

我正在努力解决一个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
  });
}

现在返回假行看起来无关紧要。但是,由于某种原因,当我把它取出时,下载失败了,并且它成功了。有人可以向我解释为什么会这样吗?如果需要,很乐意发布更多信息。

2 个答案:

答案 0 :(得分:2)

根据the documentation

  

从事件处理程序返回false将自动调用   event.stopPropagation()event.preventDefault()

答案 1 :(得分:1)

$('.my-form').on('submit', function() {

无论是故意不提交表单,还是只提交页面,只要点击按钮,页面就会刷新。

添加return false会阻止表单或页面提交,并且AJAX调用有机会完成,window.location.href重定向将通过。