jQuery ajax 从服务器获取图像数据

Posted

技术标签:

【中文标题】jQuery ajax 从服务器获取图像数据【英文标题】:jQuery ajax get image data from server 【发布时间】:2019-07-21 14:50:21 【问题描述】:

这是我的 Postman 测试请求:

这是标题:

这是我的 AJAX 请求:

var getAvatarData = new FormData();
getAvatarData.append('token', Cookies.get('user_token'));
$.ajax(
    method: "POST",
    data: getAvatarData,
    url: AppSettings.userData.photo_path + "s/" + AppSettings.userData.profile.photo,
     contentType: "multipart/form-data",
     processData: false,
).done(function (data) 
    console.log(data)
).fail(function (err) 
    console.log(err)
);

所以,我总是以 Not found 进入 Fail 块。

使用这些 ajax 设置:

method: "POST",
data: getAvatarData,
url: AppSettings.userData.photo_path + "s/" + AppSettings.userData.profile.photo,
dataType: "json",
mimeType: "multipart/form-data",
contentType: false,
processData: false,

我也失败了:

我错过了什么?这里有什么问题?

【问题讨论】:

【参考方案1】:

我看到您已将 dataType 设置为 JSON,如果您将此值设置为 JSON,即使您得到 200 ok 并且响应文本格式不正确JSON 字符串,您将进入错误处理程序。您可以在失败对象中看到您获得了 200 ok,并且响应文本包含内容。

尝试将您的数据类型更改为 image/png,看看会发生什么。

另外,你可以试试这段代码,看看它是否适合你。

$.ajax(
  method: "GET",
  url: 'https://httpbin.org/image/jpeg',
  dataType: "image/jpeg",
).done(function(data) 
  console.log(data);
).fail(function(err) 
  console.log(err);
);

【讨论】:

您的代码与 2 场景中描述的相同 = 失败并返回 200 您是否尝试更改代码中的数据类型?您点击了失败处理程序,因为您的代码需要 JSON 数据,但它没有得到。您甚至可以出于测试目的将其删除,jquery 会尝试猜测它。

以上是关于jQuery ajax 从服务器获取图像数据的主要内容,如果未能解决你的问题,请参考以下文章

使用 jQuery 从 .NET 服务获取 JSON 数据:与 ajax 设置混淆

如何从MVC5中的jquery ajax调用中获取部分视图和JSON数据?

使用jQuery Ajax和PHP从URL上传图像

jQuery – AJAX get() 和 post() 方法

使用 Jquery AJAX 从 ASP.NET Web 服务器获取对象

4.27 jQuery AJAX get() 和 post() 方法