2013-11-21 2 views
0

У меня есть веб-сервис WCF, который возвращает Images как json.Как отобразить json как изображение с помощью jquery?

[OperationContract] 
     [WebGet(UriTemplate = "Service/GetCarList")] 
     public List<CarModel> GetCarList() 
     { 

      var carList = _db.Cars.ToList(); 
      var carPhotos = _db.CarPhotoes.ToList(); 
      return carList.Select(car => new CarModel 
      { 
       Id = car.CarId, 
       Model = car.Model, 
       Images = carPhotos.Where(m => m.CarId == car.CarId).Select(m => m.CarPhoto1).ToList() 
      }).ToList(); 
     } 

Я попробовал показать в DOM по следующему пути

@{ 
    ViewBag.Title = "Home Page"; 
} 
<script src="@Url.Content("~/Scripts/jquery-1.10.2.js")" type="text/javascript"></script> 

<div id="divMyLetterImage"></div> 


<script type="text/javascript"> 

    var getCarUrl = 'http://localhost:62051/Service/GetCarList'; 

    $(document).ready(function() { 

     $.ajax({ 
      cache: false, 
      type: "GET", 
      dataType: "json", 
      url: getCarUrl, 
      success: function (response) { 

       var imag = "<img " 
          + "src='" + "data:image/jpg;base64," 
          + response[0].Images[0] + "'/>"; 
       $("#divMyLetterImage").replaceWith(imag); 
       alert(response[0].Images[0]); 
      }, 
      error: function (xhr) { 
       alert(xhr.responseText); 
      } 
     }); 

    }); 
</script> 

response[0].Images[0] возвращает мне

255,216,255,224,0,16,74,70,73,70,0,1,1,1,0,96,0,96,0,0,255,236,0,17,68,117,99,10‌​7,121,0,1,0,4,0,0,0,60,0,0,255,219,0,67,0,2,1,1,2,1,1,2,2,2,2,2,2,2,2,3,5,3,3,3,3‌​,3,6,4,4,3,5,7,6,7,7,7,6,7,7,8,9,11,9,8,8,10,8,7,7,10,13,10,10,11,12,12,12,12 и больше

Но это не работает ... ..... Как мне это сделать??

+0

Выводится сообщение 'alert (response [0] .Images [0])' correct? –

+0

возможно вы можете придумать лучшее объяснение, чем 'не работает' ??? Предоставьте сведения, найденные в консоли браузера/инструментах разработчика. Никогда не следует использовать 'async: false' – charlietfl

+0

alert (response [0] .Images [0]) дает мне 255 216 255 224 0, 16, 74, 70, 7, 70, 10, 1, 1, , 96,0,0,255,236,0,17,68,117,99,107,121,0,1,0,4,0,0,0,60,0,0,255,219,0,67,0,2,1,1,2,1 , 1,2,2,2,2,2,2,2,2,3,5,3,3,3,3,3,6,4,4,3,5,7,6,7,7 , 7,6,7,7,8,9,11,9,8,8,10,8,7,7,10,13,10,10,11,12,12,12,12 и более @ MartyIX –

ответ

0

Я считаю, что ваша линия:

Images = carPhotos.Where(m => m.CarId == car.CarId).Select(m => m.CarPhoto1).ToList() 

неправильно, и вы должны вернуться в кодировке base64 строки. Ясно (согласно вашему комментарию) вы получаете, вызывая .ToList() список чисел, представляющих определенные байты, но вам нужно вернуть строку с кодировкой Base64. Для этой цели может быть полезным способ Convert.ToBase64String.

Смежные вопросы