我试图导出zingchart图像,以便在java中的base64对象中获取它。
我想在js:中使用这样的getimageapi
function exportImgChart(idChart) {
zingchart.exec('idChart', 'getimagedata', {
filetype: 'png',
callback : function(imagedata) {
console.log(imagedata);
document.getElementById('output_image').src = imagedata;
}
});}
但我不知道如何从java代码中调用它?我把我的js函数放成这样:
public void getImageChart(AjaxRequestTarget target, String idChart) {
String js = MessageFormat.format("exportImgChart({0});", //
StringUtils.wrap(this.getMarkupId(), "'") //
);
target.appendJavaScript(js);
//how to get image base 64 here ?
}
我的java框架是Wicket
谢谢你的帮助!
Jeff
getImageChart(AjaxRequestTarget, String)
被调用是因为浏览器对服务器进行了一些Ajax调用。
然后在服务器端构建一个字符串,将与响应一起发送到浏览器。target.appendJavaScript(js);
不会立即发送。它只是说"js’将是响应的一部分;但是一旦CCD_ 3和其他几个方法被完全执行,响应就被刷新到浏览器。
不能在target.appendJavaScript(js)
之后立即使用base64编码的图像。要获得base64数据,您需要在JavaScript函数exportImgChart()
中对服务器进行新的Ajax调用。这个新的Ajax调用很可能会调用新的回调方法,例如onBase64Image()
或您命名的任何方法
有关更多信息,请参阅此答案:https://stackoverflow.com/a/42612027/497381