Javascript 将图像src从ajaxpost设置为restapi

Javascript 将图像src从ajaxpost设置为restapi,javascript,jquery,ajax,asp.net-web-api,Javascript,Jquery,Ajax,Asp.net Web Api,这可能吗?我的ajax调用如下所示: $.ajax( { type: "POST", url: "/reporter/api/image/getimage/", data: { "": httpNonAccessibleFilePath }, success: function ( imageData ) { $( "#imagecontent" ).append( '<img src="' + imageData + '" />' )

这可能吗?我的ajax调用如下所示:

$.ajax( {
    type: "POST",
    url: "/reporter/api/image/getimage/",
    data: { "": httpNonAccessibleFilePath },
    success: function ( imageData ) {
        $( "#imagecontent" ).append( '<img src="' + imageData + '" />' );
    }
} );

所有的位都连接好了,也就是说,我可以点击服务,它返回数据。。。但我没有看到任何图像。这里缺少什么?

您需要返回一个指向图像位置的URL,该URL可以是生成图像的服务器方法


基本上,您恢复了
img
标记工作方式的逻辑:
img
元素
src
必须指向web浏览器下载图像的位置。不是服务器将图像内容发送到
img


因此,需要做的是返回URL,如
/dynamic images/image-1.jpg
,并拦截该路径上的请求,以便它们返回实际内容。

您需要返回指向图像位置的URL,该URL可以是生成图像的服务器方法


基本上,您恢复了
img
标记工作方式的逻辑:
img
元素
src
必须指向web浏览器下载图像的位置。不是服务器将图像内容发送到
img


因此,需要做的是返回URL,如
/dynamic images/image-1.jpg
,并拦截该路径上的请求,以便它们返回实际内容。

据我所知,您是在响应AJAX请求发送文件内容。正如@skuntsel在他的评论中指出的那样,
src
属性必须指向URI。然而,有一个解决办法。请看一下URI方案。它正是你想要的,只是需要更多的信息

因为您使用的是PNG,所以看起来是这样的:

$('#imagecontent').append('<img src="data:image/png;base64,' + imageData + '" />');
$('#imagecontent')。追加('');

请参阅同一篇维基百科文章。显然,这只适用于支持它的浏览器。。。这是一项非常年轻的技术。

据我所知,您正在发送文件内容以响应AJAX请求。正如@skuntsel在他的评论中指出的那样,
src
属性必须指向URI。然而,有一个解决办法。请看一下URI方案。它正是你想要的,只是需要更多的信息

因为您使用的是PNG,所以看起来是这样的:

$('#imagecontent').append('<img src="data:image/png;base64,' + imageData + '" />');
$('#imagecontent')。追加('');

请参阅同一篇维基百科文章。显然,这只适用于支持它的浏览器。。。这是一项相当年轻的技术。

让我提出另一种解决方案。如果您愿意/能够让API接受GET调用,那么事情就会简单得多:

var $img = $('<img/>', {
             src: "/reporter/api/image/getimage/?path=" + httpNonAccessibleFilePath
           });   
$( "#imagecontent" ).append( $img);
var$img=$('

不需要AJAX调用。

让我建议一种替代解决方案。如果您愿意/能够让您的API接受GET调用,那么事情就会简单得多:

var $img = $('<img/>', {
             src: "/reporter/api/image/getimage/?path=" + httpNonAccessibleFilePath
           });   
$( "#imagecontent" ).append( $img);
var$img=$('

不需要AJAX调用。

您确定$(“#imagecontent”)吗已经在DOM中?忘了这一点。我忘了看第二段代码。另一个问题是,你的API返回什么?URI还是实际的图像内容?@Yep。我看到断开的图像图标加载到该图像区域。如果我只返回一个字符串,带有指向web上某个随机图像的url,而不是httpresponsemessage,图像显示很好。
img
元素的
src
必须指向web浏览器将下载图像的位置。如果api返回实际图像,则将图像内容发送到
img
@Nicros的不是服务器,那么为什么要首先调用ajax?您确定吗$“#图像内容”)已经在DOM中?忘了这一点。我忘了看第二段代码。另一个问题是,你的API返回什么?URI还是实际的图像内容?@Yep。我看到断开的图像图标加载到该图像区域。如果我只返回一个字符串,带有指向web上某个随机图像的url,而不是httpresponsemessage,图像显示很好。
img
元素的
src
必须指向web浏览器下载图像的位置。如果api返回实际图像,则不是服务器将图像内容发送到
img
@Nicros,那么为什么要首先调用ajax?我也喜欢这种方法-我想到了,但我的path参数是疯狂的
\\localfile\long\path\to\image.jpg
。我在该路径上尝试了encodeURI,但在我的REST端我得到了一个我还没有弄清楚的httpreponsexception。将继续尝试。工作!在jQuery端,encodeURI加上api中get方法的正确签名,这是完美的。我我也喜欢这种方法-我想到了,但我的路径参数是疯狂的
\\localfile\long\path\to\image.jpg
。我在该路径上尝试了encodeURI,但在我的REST端我得到了一个我还没有弄明白的HttpReponsexception。将继续尝试。工作!在jQuery端,encodeURI在api和这是完美的。我确实尝试了一下,但我无法让它工作…但zeroflagL的解决方案使用get workedgreat@Nicros我猜这里的问题是data:URI方案目前只接受base64编码的数据。可能您发送的数据都是字节。您可能需要某种转换…考虑到这一点,zErofagl的解决方案是最简单、最受支持的解决方案我确实尝试了一下,但是我无法让它工作……但是zeroflagL的解决方案使用get workedgreat@Nicros我想这里的问题是data:URI方案目前只接受base64编码的数据。可能您发送的数据都是以字节为单位的。您可能需要某种转换……考虑到这一点,zeroflagL的解决方案是e最简单且最受支持。;)