#javascript #jquery #ajax #wcf #web-services
#javascript #jquery #ajax #wcf #веб-сервисы
Вопрос:
ОТРЕДАКТИРОВАННЫЙ код обновлен
когда я удалил тип данных, это вызвало успех. однако изображение не отображается (вместо этого отображается заполнитель X для тега изображения). Возможно ли вообще отобразить байты изображения в теге html-изображения?
оригинал
С помощью следующего фрагмента (конфигурация, похоже, в порядке) я пытаюсь поэкспериментировать, чтобы посмотреть, смогу ли я получить растровые данные с сервера и загрузить их в DOM. Проблема в том, что вызов ajax выдает ошибку, но код состояния равен 200 «OK» … кто-нибудь знает почему?
Default.aspx (тестовая страница)
<div></div>
...
<script type="text/javascript">
/// <reference path="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5-vsdoc.js"/>
$(function () {
$.ajax({
type: "GET",
url: "Service.svc/GetBitmap",
context: $("<div>"),
success: function (r) {
$(this).append(
$("<img src='data:image/bmp;base64," r.text "'></img>"));
},
});
});
</script>
Service.cs (тестовый сервис)
public class Service : IService
{
public byte[] GetBitmap()
{
MemoryStream ms = new MemoryStream();
Bitmap b = new Bitmap(HostingEnvironment.MapPath(@"~/Bitmap/test.bmp"));
b.Save(ms, ImageFormat.Bmp);
return new BinaryReader(ms).ReadBytes((int)ms.Length);
}
}
Комментарии:
1. вы пробовали без
base64,
части?2. @Einacio: да, у меня есть. растровое изображение также допустимо, когда я использую <img src=»Bitmap/test.bmp» /> оно отображается правильно
3. и обратная кодировка base64 для возврата сервиса?
4. @Einacio: Я предполагал, что WCF делает это для меня, возможно, ошибочно. Должен ли я делать что-то особенное на стороне сервиса?
5. я не знаю WCF, поэтому я просто опубликовал в качестве предложения. Вам лучше исследовать и доказать, что я ошибаюсь. попробуйте поместить ответ ajax в a
<pre>
, и вы увидите, закодирован ли он в base64
Ответ №1:
Во-первых, правильный тип MIME — это image/bmp
, не img/bmp
.
Тем не менее, насколько я знаю $.ajax
, поддерживаются только текстовые типы данных. Смотрите здесь: http://api.jquery.com/jQuery.ajax /
Я бы посоветовал вам написать сервис, который возвращает изображение по хорошо известному URL.
Комментарии:
1. Я обновил вопрос до того, каким он должен был быть изначально. Если я не могу понять это, я приму это как решение, потому что это помогло мне зайти так далеко.