我正在尝试使用ajax将image2canvas创建的映像发送到控制器,然后使用控制器下载它。
这是我的代码:
$("#btnExportAsImageByPost").click(function () {
var base64;
html2canvas($("#Table")[0]).then(function (canvas) {
base64 = canvas.toDataURL();
document.body.appendChild(canvas);
alert(base64);
$("[id*=hfImageData]").val(base64);
});
alert(base64);
var url = "/HtmlToImage/Index/";
$.ajax({
type: 'POST',
url: url,
data: base64,
dataType: "string",
success: function (evt) {
$("#Table").hide('slow');
},
});
});
<div id="Table" style="width:340px;background-color:White;padding:5px">
<table cellspacing="0" rules="all" border="1" style="border-collapse: collapse;">
<tr>
<th scope="col" style="width: 90px;">Customer id</th>
<th scope="col" style="width: 120px;">Name</th>
<th scope="col" style="width: 120px;">Country</th>
</tr>
<tr>
<td>1</td>
<td>John Hammond</td>
<td>United States</td>
</tr>
<tr>
<td>2</td>
<td>Mudassar Khan</td>
<td>India</td>
</tr>
</table>
以下是我的控制器操作:
[HttpPost]
[ActionName("Index")]
public ActionResult Index_Post(string base64)
{
byte[] bytes = Convert.FromBase64String(base64);
return File(bytes, "image/png", "HtmlToImage.png");
}但问题是,当控制器返回文件时,浏览器中不会发生任何事情。而不是提示保存文件。
发布于 2016-11-01 14:17:11
我认为您的问题是,那么函数将是异步承诺。所以你必须在里面调用ajax。
因此,您在控制器上接收null的原因是,当时的函数还没有完成。base64字符串为空。如果您想了解更多信息,请尝试阅读更多有关异步javascript工作方式或承诺如何工作的内容;)。
https://stackoverflow.com/questions/40361664
复制相似问题