Ajax检测提交完成后的时间

时间:2016-04-16 12:37:28

标签: javascript jquery ajax node.js

我正在试图找出我的节点服务器何时响应我的ajax提交。目前,表单通过几个字符串发送到服务器,在那里找到文件并将其发送回客户端。我希望能够检测客户端何时收到文件,以便我可以更改网页。我曾尝试使用Ajax Form,但我认为它不支持接收文件,只支持XML或JSON响应等。当我尝试它时,节点服务器会做正确的事情并发送文件,但客户端永远不会收到它。这是我当前的代码可以工作,客户端收到文件,但我不能在收到它后不能更改网页。

  $(document).on('click', 'a', function () {
     var form = $(this).parents().find("#download-form").submit();
     $(this).addClass("disabled");
     $(this).html("<i class='fa fa-refresh fa-spin'></i>");
  });

2 个答案:

答案 0 :(得分:0)

您可以将表单的target属性设置为iframe,并为iframe的load事件添加事件监听器。

示例:(也在jsfiddle

<script>
     document.getElementById("resultFrame").addEventListener("load", function(){
        // do something once iframe loaded
        document.getElementById("resultCount").innerHTML = parseInt(document.getElementById("resultCount").textContent)+1;
    });
</script>

<form method="GET" action="https://fiddle.jshell.net/img/logo.png" target="resultFrame">
  <input type="submit" />
</form>

<p id="resultCount">0</p>

<iframe name="resultFrame" id="resultFrame"></iframe>

答案 1 :(得分:0)

您可以使用ajax:complete事件来检测表单提交成功()

var form = $(this).parents().find("#download-form");
form.bind('ajax:complete', function() {
         // tasks to do 
});
form.submit();