Javascript 从请求数据动态创建SVG
我尝试过谷歌搜索,但是html中关于svg的信息非常混乱。我有一个相当复杂的场景,至少对我来说是这样: 使用jQuery,我不想基于GET请求的响应数据在div(Javascript 从请求数据动态创建SVG,javascript,html,svg,Javascript,Html,Svg,我尝试过谷歌搜索,但是html中关于svg的信息非常混乱。我有一个相当复杂的场景,至少对我来说是这样: 使用jQuery,我不想基于GET请求的响应数据在div(id=“手动重新填充图像”)内动态创建svg对象。svg将包含图像数据和其他svg元素。如果GET请求失败,则div的全部内容应设置为fail函数中的消息。最后,在图像完全下载/加载后,需要做出向用户显示内容的决定 到目前为止,我得到的是: function load_grid_svg() { show_gridimage =
id=“手动重新填充图像”
)内动态创建svg对象。svg将包含图像数据和其他svg元素。如果GET请求失败,则div的全部内容应设置为fail函数中的消息。最后,在图像完全下载/加载后,需要做出向用户显示内容的决定
到目前为止,我得到的是:
function load_grid_svg() {
show_gridimage = true;
$.get(
"/api/results/gridding/svg",
function (data) {
svg = document.importNode(data, true);
$("#manual-regridding-image").html(svg);
}
).fail(function() {
$("#manual-regridding-image").html("<em>Could not find the grid image! Maybe gridding failed last time?</em>");
}).always(function() {
if (show_gridimage) {
$("#manual-regridding-image").show();
} else {
$("#manual-regridding-image").hide();
}
});
}
根本不知道为什么需要
文档.importNode
。您可以使用
$.html()
将svg的内容添加到文档中
检查此示例:
svgstr=''
$('#btn1')。单击(函数(){
$('#a1')。追加(svgstr)
});代码>
一些文本
单击添加SVG
根本不知道为什么需要文档。导入节点
。
您可以使用$.html()
将svg的内容添加到文档中
检查此示例:
svgstr=''
$('#btn1')。单击(函数(){
$('#a1')。追加(svgstr)
});代码>
一些文本
单击以在JavaScript中添加SVG,您可以使用XMLHttpRequest并将SVG文件responseText直接加载到Div innerHTML中。回调函数还可以调用任何加载后事件。这还提供了对div中每个svg元素的访问
见下例:
将SVG加载到DIV中
函数callSVGfile()
{
/*
var SVGFile=“mySVGfile.svg”
var loadXML=newXMLHttpRequest;
loadXML.onload=回调;
loadXML.open(“GET”,SVGFile,true);
loadXML.send();
函数回调()
{
//---响应文本---
mySVGdiv.innerHTML=loadXML.responseText
}
*/
mySVGdiv.innerHTML=loadXMLreponseText
}
var loadXMLreponseText=“”+
''+
''+
''
在JavaScript中,您可以使用XMLHttpRequest并将svg文件responseText直接加载到Div innerHTML中。回调函数还可以调用任何加载后事件。这还提供了对div中每个svg元素的访问
见下例:
将SVG加载到DIV中
函数callSVGfile()
{
/*
var SVGFile=“mySVGfile.svg”
var loadXML=newXMLHttpRequest;
loadXML.onload=回调;
loadXML.open(“GET”,SVGFile,true);
loadXML.send();
函数回调()
{
//---响应文本---
mySVGdiv.innerHTML=loadXML.responseText
}
*/
mySVGdiv.innerHTML=loadXMLreponseText
}
var loadXMLreponseText=“”+
''+
''+
''
如@Tomalak在注释中所示,响应是一个XMLDocument
,而不仅仅是…
字符串,因此要使其正确显示$中的回调,get
应该是:
function (data) {
$("#manual-regridding-image").append(data.documentElement);
}
function (data) {
$("#manual-regridding-image").append(data.documentElement);
}
为确保div仅显示最新的内容,请使用$(#手动重新填充图像”).empty()
需要在$.get
-调用之前执行。如@Tomalak在注释中所示,响应是XMLDocument
,而不仅仅是..
字符串,因此要使其在$中正确显示回调,get
应该是:
function (data) {
$("#manual-regridding-image").append(data.documentElement);
}
function (data) {
$("#manual-regridding-image").append(data.documentElement);
}
为确保div仅显示最新的内容,需要在调用$之前执行$(#手动重新填充图像”).empty()
。get
-调用。它是如何工作的?发生了什么事?这可能有点过头了,你可以试着用@JosephYoung我会调查一下的,谢谢。数据的类型是什么?是文件吗?如果是,请尝试document.importNode(data.documentElement)
。另外,使用.append()
而不是.html()
。不要认为从ajax调用中获得的数据是svg文档,而只是文本。无论哪种方式,这里都不需要importNode,只要添加svg文本就可以了,如果它的名称空间正确的话?发生了什么事?这可能有点过头了,你可以试着用@JosephYoung我会调查一下的,谢谢。数据的类型是什么?是文件吗?如果是,请尝试document.importNode(data.documentElement)
。另外,使用.append()
而不是.html()
。不要认为从ajax调用中获得的数据是svg文档,而只是文本。不管怎样,这里不需要importNode,只要能够添加svg文本,只要它的名称空间正确等等。