从ajax响应到img标记

时间:2016-10-25 20:26:46

标签: javascript jquery html ajax wcf

我有一个WCF服务,它返回一个相当于位图图像的base64字符串。

return Convert.ToBase64String(ImgBytes);

我正在使用ajax来调用此服务。代码类似于。,

jQuery.ajax({
     url: MY_SERVICE_URL,
     type: "GET",
     dataType: "html",
     success: AjaxSucceeded,
     error: AjaxFailed
});

function AjaxSucceeded(result, textStatus, request) {
    var binary = "";
    var responseText = request.responseText;
    var responseTextLen = responseText.length;

    for (i = 0; i < responseTextLen; i++) {
         binary += String.fromCharCode(responseText.charCodeAt(i) & 255);
    }

    $("#myimage").attr("src", "data:image/jpg;base64," + btoa(binary));
}

但我无法看到任何图像。

我也尝试将dataType用作“text”。

我已经尝试打印我分配给img标签的src的数据。我使用了那些数据here,在那里我可以看到图像。

如果我硬编码响应值,我也可以查看图像,如。,

document.getElementById("myimage").src = "data:image/jpg;base64," + "Qk02EA4AAA...."

我试过搜索各种论坛。但不幸的是,我无法弄清楚这一点。我错过了什么吗?

提前致谢。

3 个答案:

答案 0 :(得分:1)

如果您使用的是jquery,则应该像这样使用

$("#myimage").attr("src","data:image/jpg;base64," + "Qk02EA4AAA....")

答案 1 :(得分:0)

您还可以使用这个更短的代码段。

$.get(MY_SERVICE_URL, function (base64string) {
    $("#myimage").attr("src", "data:image/jpg;base64," + base64string);
});

假设MY_SERVICE_URL仅发送来自return Convert.ToBase64String(ImgBytes);&gt;的确切结果/9j/4AAQSkZJRgABAQEASABIAAD/2wBD....

答案 2 :(得分:0)

谢谢大家的支持。我能够度过难关。

这就是我所做的。

jQuery.ajax({
     url: MY_SERVICE_URL,
     type: "GET",
     dataType: "json",
     success: AjaxSucceeded,
     error: AjaxFailed
});

function AjaxSucceeded(response) {
    $("#myimage").attr("src", "data:image/jpg;base64," + Response.GetCurrentFrameResult);
}