jQuery AJAX从文件中检索SVG - 错误:'格式不正确'

时间:2015-08-30 13:59:18

标签: javascript jquery ajax svg

我一直在使用许多不同的svg来自inkscape并使用.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文件中的元数据有关吗?
  • 应该/我该如何更正错误?

1 个答案:

答案 0 :(得分:3)

想出来...... $ .get()是$ .ajax()的简写版本,除了我认为它使用XML作为默认数据类型。我认为它会使用HTML作为默认值,因此只使用了longhand并指定了dataType:'html',现在它与svg兼容。

$.ajax(
{
    url: "img/floorplan/"+ source +".svg" ,
    dataType: 'html',
    type: 'GET',
    success: function(data) 
    {         
        $(".container-svg").prepend(data);
    }
});