Javascript 页面发送请求且页面停止加载后的事件
我正在提交一个表单,该表单正在向后端C#action发送请求。后端生成一个pdf文件,并将其发送回浏览器进行下载。我怎样才能赶上这次活动?我只想在服务器发送pdf时向用户显示一条消息。我不能使用ajax,因为我通过表单发送请求,并且我希望响应是一个附件Javascript 页面发送请求且页面停止加载后的事件,javascript,c#,asp.net,forms,events,Javascript,C#,Asp.net,Forms,Events,我正在提交一个表单,该表单正在向后端C#action发送请求。后端生成一个pdf文件,并将其发送回浏览器进行下载。我怎样才能赶上这次活动?我只想在服务器发送pdf时向用户显示一条消息。我不能使用ajax,因为我通过表单发送请求,并且我希望响应是一个附件 public ActionResult ConvertHTMLtoPDF(string htmltoPDfFullUrl) { Byte[] res = null;
public ActionResult ConvertHTMLtoPDF(string htmltoPDfFullUrl)
{
Byte[] res = null;
using (MemoryStream ms = new MemoryStream())
{
// not important logic
}
var stream = new MemoryStream(res);
return new FileStreamResult(stream, "application/pdf")
{
FileDownloadName = "some name.pdf"
};
}
@使用(Html.BeginForm(“ConvertHTMLtoPDF”,“Home”,FormMethod.Post,new{id=“beginConvertHTMLtoPDF”}))
{
}
我通过从服务器发送cookie并在客户端不断检查cookie来解决这个问题
这就是我送饼干的方式
Response.Cookies.Add(new HttpCookie(serverCookieResponse + "_CookiePDFResponse", DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss:ff")));
这就是我检查cookie是否已收到的方式
function checkCookie() {
let cookieName = $('#serverCookieResponse').val() + "_CookiePDFResponse";
var cookieVal = $.cookie(cookieName);
if (cookieVal == null || cookieVal === 'undefined') {
setTimeout("checkCookie();", 1000);
}
else {
document.cookie = cookieName + '=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
}
}
希望这对别人有帮助 请注意,
formSubmit
在您的代码中从未被调用,因此表单可能未被提交。当您单击“.formSubmitDiv”时,表单将被调用,它将执行调用表单的函数。请参阅上面的代码。同样,您的代码没有调用formSubmit
函数,单击处理程序中只有对函数的引用,但没有调用。您没有看到这部分代码吗?document.getElementById('beginConvertHTMLtoPDF').submit();这确实提交了表单!但是包含该代码的函数永远不会执行。。。请看问题中的代码,这可能只是文章中的一个输入错误。。。
@using (Html.BeginForm("ConvertHTMLtoPDF", "Home", FormMethod.Post, new { id = "beginConvertHTMLtoPDF" }))
{
<input type="hidden" name="htmltoPDfFullUrl" id="htmltoPDfFullUrl" />
}
Response.Cookies.Add(new HttpCookie(serverCookieResponse + "_CookiePDFResponse", DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss:ff")));
function checkCookie() {
let cookieName = $('#serverCookieResponse').val() + "_CookiePDFResponse";
var cookieVal = $.cookie(cookieName);
if (cookieVal == null || cookieVal === 'undefined') {
setTimeout("checkCookie();", 1000);
}
else {
document.cookie = cookieName + '=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
}
}