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

Asynchronously load content with unknown MIME type (image or text)

本文关键字:文本 图像 加载 未知 类型 MIME 异步      更新时间:2023-09-26

我正在寻找一种使用 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文档的内容,但不知道如何获取。

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

谢谢!

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

或者,如果第二次传递到服务器是不可接受的,您可以提取资源,以 base 64 对其进行编码(使用 btoa ),并显示来自 data: URI 的图像。然后,执行与此处相同的错误检查,并在映像失败时引用原始 Ajax 结果。