我有一个简单的 HTML 表单,它向第二个 PHP 文件发送一个简单的 POST 请求:
<form method="POST" action="parse.php">
parse.php 生成一个要下载的文件并将其与 header 一起发送到输出缓冲区
header("Cache-Control: private");
header("Content-Type: application/stream");
header("Content-Disposition: attachment; filename=test.html");
我可以在不使用异步请求的情况下从表单页面检测已完成/已开始的下载吗?当然,我可以通过 onSubmit
知道表单何时提交,但是下载开始或完成时是否会触发 jQuery 事件?
最佳答案
这取决于您使用哪种 jQuery 方法。
- jQuery.post() 提供了一个名为“success”的方法,当 post 请求成功完成时会调用该方法。
- jQuery.ajax() 提供了与上面相同的称为“成功”的方法以及称为“完成”的方法。无论成功与否,都会调用完整的方法。
更多详细信息和使用示例可以在链接的 jQuery 文档中找到。
我刚刚注意到上面提到的两种方法将在 jQuery 1.8 之后被弃用,你最好使用 done()
而不是提到的其他方法。请参阅上面链接的文档,了解有关如何使用新旧方法来实现您的目标的完整详细信息。
示例 1(已弃用):
$.ajax({
type: "POST",
url: url,
data: data,
success: function(data){
// Do something with your data here
},
dataType: dataType
});
示例 2:
$.ajax({
url: "http://example.com/url.php",
type: 'POST',
data: data
}).done(function( data ) {
if ( console && console.log ) {
console.log( "Sample of data:", data.slice( 0, 100 ) );
}
});
关于javascript - 检测同步 POST 请求的开始和停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24506919/