我一直在使用许多不同的svg从inkscape和使用。load到一个特定的容器元素一段时间。我最近尝试将加载更改为get (AJAX),主要是为了能够添加svg。
这工作得很好,svg预先添加到元素应该做的,问题是我得到控制台错误"不格式"时使用ajax获取方法检索svg文件。我不喜欢忽略错误,但这会干扰页面内容。
不认为这是svg的问题,因为它以前是工作的,只是为了确保我检查了svg中包含的所需名称空间(尽管使用标准保存的inkscape默认元数据)。如:
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:ev="http://www.w3.org/2001/xml-events">
原始加载方法(无错误):
$('.container-svg').load("img/floorplan/"+ source +".svg", null, function()
{
//other things happen
});
新的Ajax方法(错误):
$.get("img/floorplan/"+ source +".svg").done(function( data )
{
$(".container-svg").prepend($(data).find("svg"));
//other things happen
});
- 这与svg文件中的元数据有关吗?
- 我应该/如何纠正错误?
算出来了....$.get()是$.ajax()的简写版本,除了我认为它使用XML作为默认数据类型。我认为它会使用HTML作为默认值,所以只是使用手写和指定dataType: ' HTML ',这是现在与svg兼容。
$.ajax(
{
url: "img/floorplan/"+ source +".svg" ,
dataType: 'html',
type: 'GET',
success: function(data)
{
$(".container-svg").prepend(data);
}
});