异步加载具有未知MIME类型(图像或文本)的内容

时间:2013-01-25 18:45:03

标签: javascript jquery ajax

我正在寻找一种使用javascript / jquery异步加载图像的方法,同时能够处理返回的xml文档(如果发生错误)。

此刻我加载了这样的图像:

var img = $("<img id='ws-image'/>").attr('src', $("#dynImgUrl").val());

img.load(function() {
    if (!this.complete || typeof this.naturalWidth == "undefined"
                       || this.naturalWidth == 0) {
        alert('broken image!');
    } else {
        img.attr('width', 500);
        img.attr('height', 500);
        $("img-div").html(img);
    }
}).error(function() {
    alert("Could not load image");
});

只要服务器返回图像,这确实有效。如果在出现错误的情况下返回xml文档,则会调用错误回调。但我需要获取该xml文档的内容而不知道如何。

有没有办法能够处理这两种可能的服务器响应?

谢谢!

1 个答案:

答案 0 :(得分:0)

假设服务器启用了CORS以允许跨域Ajax,我会尝试加载映像,然后在映像加载失败时对同一资源执行Ajax提取。

或者,如果第二次传递到服务器是不可接受的,您可以获取资源,在base 64中编码(使用btoa)并显示data: URI的图像。然后,执行与此相同的错误检查,并在图像发生故障时返回原始的Ajax结果。