Javascript 异步加载具有未知MIME类型(图像或文本)的内容
我正在寻找一种使用javascript/jquery异步加载图像的方法,同时能够处理返回的xml文档(在出现错误的情况下) 此时,我加载的图像如下所示:Javascript 异步加载具有未知MIME类型(图像或文本)的内容,javascript,jquery,ajax,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"
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");
});
var img=$(“
只要服务器返回一个图像,它就可以工作。如果出现错误,它返回一个xml文档,则调用错误回调。但是我需要获取该xml文档的内容,不知道如何获取
是否有一种方法可以处理这两种类型的可能的服务器响应
谢谢!假设服务器启用了CORS以允许跨域Ajax,我将尝试加载映像,然后在映像加载失败时对同一资源执行Ajax获取
或者,如果第二次传递到服务器是不可接受的,您可以获取资源,在base 64中对其进行编码(使用)然后,执行与此处相同的错误检查,并在图像出现故障时返回原始Ajax结果。为了避免以后遇到问题,请在绑定到加载事件之后再设置src属性。您的url是跨域url吗?我不明白,您是说$(“#dynimgur”).val()
可以是图像的URL,也可以是XML。我真的看不到任何异步内容?嘿,谢谢你的评论。URL是跨域URL,或者至少,如果你是这么问的,我不能影响服务器的行为。是的,URL是指向Web服务的URL,它返回一个没有错误的图像。如果发生错误它将以xml文档响应。我也需要能够显示该内容。嘿,apsillers!感谢您的回答。不幸的是,对同一资源进行第二次获取是不可接受的,因为服务器可能会重新计算所有内容(可能需要一分钟左右)在它最终返回xml错误文档之前。您的第二种方法似乎是我想做的。我将尝试一下,看看它是否符合我的要求。谢谢!不幸的是,我没有找到正确地对原始图像数据进行base64编码的方法。我尝试过这样做:$.ajax({url:$(“#dynimgur”).val(),success:function(data){var img=$(“但是window.btoa调用导致InvalidCharacterError。