2013-11-21 56 views
0

我有一個WCF Web服務,返回圖像爲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(); 
     } 

我已經嘗試過通過以下方式

@{ 
    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]在DOM顯示返回我

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])的輸出是否正確? –

+0

也許你可以想出一個比'不工作'更好的解釋?提供瀏覽器控制檯/開發者工具中的詳細信息不應該使用'async:false' – charlietfl

+0

alert(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,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可能對此有用。