我已经使用 inkscape 中的许多不同的 svg 并使用 .load 到特定的容器元素一段时间了。我最近尝试将负载更改为 get (AJAX),主要是为了能够在前面添加 svg。
这工作得很好,svg 应该按照原样添加到元素前面,问题是当使用 ajax get 方法检索 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);
}
});
关于javascript - jQuery AJAX 从文件中检索 SVG - 错误 : 'not well-formed' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32297312/