我有一个highcharts svg,我通过canvg转换为png并显示在网页上。然后我想将这个PNG发送到服务器以创建一个图像链接。我下面的答案代码另一个话题:将服务器上的Canvas另存为图像时出现setRequestHeader错误
Renaming an image created from an HTML5 canvas
我的javascript代码如下:
var timeout = window.setTimeout(function() {
canvg(document.getElementById('canvas'), chart.getSVG());
}, 10000);
var canvas = document.getElementById("canvas");
var img = canvas.toDataURL("images/png");
document.write('<img src="'+img+'"/>');
saveDataURL(img)
function saveDataURL(canvas) {
var request = new XMLHttpRequest();
request.onreadystatechange = function() {
if (request.readyState === 4 && request.status === 200) {
window.location.href = request.responseText;
}
};
request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
request.open("POST", "saveDataURL.php", true);
request.send("dataURL=" + canvas.toDataURL());
}
我的PHP叫saveDataURL.php则是:
$dataURL = $_POST["dataURL"];
$encodedData = explode(',', $dataURL)[1];
$decodedData = base64_decode($encodedData);
file_put_contents("temp/faizan.png", $decodedData);
echo "http://whichchart.com/temp/faizan.png";
在firefox 12在“request.setRequestHeader”这一行发出以下错误:
Component returned failure code: 0x804b000f (NS_ERROR_IN_PROGRESS) [nsIXMLHttpRequest.setRequestHeader] http://whichchart.com/oil.js Line 102
在铬上同一行中的错误是:
Uncaught Error: INVALID_STATE_ERR: DOM Exception 11 saveDataURLoil.js:106 (anonymous function)
的例子可以在这里看到:whichchart.com。你能帮我吗?谢谢。