JavaScript在一个请求中处理不同的内容类型

JavaScript在一个请求中处理不同的内容类型,javascript,json,http,Javascript,Json,Http,在我的项目中,有一个URL,它通常响应由Java使用用户数据动态绘制的内容类型为image/png的图像 但有时由于某种原因,用户不应该看到图像,或者图像不能用用户的数据绘制。在这种情况下,服务器将以 内容类型:application/json;字符集=utf-8 这是否可以在服务器响应内容类型:image/png时显示图像,或者在服务器响应内容类型:application/json时警告错误信息;字符集=utf-8 我可以处理任何一种响应内容类型,但在一个请求中处理两种内容类型都很困难。这可能

在我的项目中,有一个URL,它通常响应由Java使用用户数据动态绘制的
内容类型为image/png
的图像

但有时由于某种原因,用户不应该看到图像,或者图像不能用用户的数据绘制。在这种情况下,服务器将以
内容类型:application/json;字符集=utf-8

这是否可以在服务器响应
内容类型:image/png
时显示图像,或者在服务器响应
内容类型:application/json时警告错误信息;字符集=utf-8

我可以处理任何一种响应内容类型,但在一个请求中处理两种内容类型都很困难。这可能吗


编辑

我试着像以前一样使用AJAX

<img id="preview-img"/>

$.ajax({
    url: "/preview",
    type: "GET",
    dataType: "JSON",
    success: function(data) {
        if (!data.success) {
            alert(data.msg);
        }
    },
    error: function() {
        alert("occur error");
    }
});
很高兴看到无论是服务器响应映像还是JSON都会触发
success
功能
但我不知道如何显示带有如下响应数据的图像

JFIFÿC
$。”,#(7),01444'9=82由于JQuery试图将响应解析为JSON,因此请求在设置了“数据类型”后失败,但如果服务器使用图像进行响应,则无法执行此操作。因此调用错误回调

在我看来,首选的解决方案是设置HTTP代码!=200(例如,404表示找不到),以防服务器无法提供映像。在这种情况下,将调用错误回调,您可以向用户显示错误对话框。否则,您可以在成功回调中继续显示映像


关于“我不知道如何显示带有类似响应数据的图像”,请看这里:

post code.。如果使用ajax,则可以。这是没有两个端点的唯一原因(一个用于成功/错误状态,另一个用于图片,如果发生错误,则为空)为了提高效率?@Pamblam code posted如果我的答案解决了您的问题,请将其标记为正确。@Joe
$.ajax({
    url: "/preview",
    type: "GET",
    success: function(data) {
        if (!data.success) {
            alert(data.msg);
        }
    },
    error: function() {
        alert("occur error");
    }
});
ÿØÿàJFIFÿÛC     
 $.' ",#(7),01444'9=82<.342ÿÛC          
2!!22222222222222222222222222222222222222222222222222ÿÀ%a"ÿÄ    
ÿĵ}!1AQa"q2¡#B±ÁRÑð$3br    
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ 
ÿĵw!1AQaq"2B¡±Á    #3RðbrÑ
$4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚâãäåæçèéêòóôõö÷øùúÿÚ?÷ú(¢
......
<img id="preview-img"/>

var image = new Image();
image.onload = function () {
    $("#preview-img").attr("src", "/preview");
};
image.onerror = function() {
    alert("could not load image");
};

image.src = "/preview";