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