В настоящее время я использую вспомогательные методы, описанные здесь, чтобы вернуть JSON из моего .ashx: http://weblogs.asp.net/scottgu/archive/2007/10/01/tip-trick-building-a-tojson-extension-method-using-net-3-5.aspx
Проблема в том, что я обернут [и] вокруг моего JSON, который искажен ... jQuery не может поднять его в обратном вызове:
[{"ImageTag":"<img src="http://www.xxx.com/image/473.jpg" alt="">"},{"ImageTag":"<img src="http://www.xxx.com/image/485.jpg" alt="">"}]
Так что я не знаю, почему я получаю скобки вокруг этого. Вот моя реализация:
private void GetImagesJSON(HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Response.Charset = Encoding.UTF8.ToString();
int i = 1;
List<Product> products = GetTestProducts();
List<CtImageList> imageList = new List<CtImageList>();
foreach(Product p in products)
{
string imageTag = HttpUtility.HtmlEncode(string.Format(@"<img src=""{0}"" alt="""">", ImageUrl(p.Image, false)));
imageList.Add(new CtImageList{ImageTag = imageTag});
i++;
}
string jsonString = imageList.ToJSON();
context.Response.Write(jsonString);
}
Вот функция обратного вызова в jQuery, которая не может разобрать это из-за запуска [и]:
function itemLoadCallback(carousel, state) {
// Only load items if they don't already exist
if (carousel.has(carousel.first, carousel.last)) {
return;
}
$.getJSON("http://localhost:59396/xxx/CHandler.ashx?action=productsjson",
function(data) {
$.each(data.items, function(i, item) {
alert('got here');
carousel.add(i, mycarousel_decodeEntities(item.ImageTag));
if (i == 3) return false;
});
});
};