Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 异步加载具有未知MIME类型(图像或文本)的内容_Javascript_Jquery_Ajax - Fatal编程技术网

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

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"

我正在寻找一种使用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");
});
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。