Сначала покажу более ранению версию на бекенде, которая работала.
public dynamic Get()
{List<string> myHeadline = new List<string>();
List<string> myBodyText = new List<string>();
var s = db2.Post.ToList();
foreach (var item in s)
{
myBodyText.Add(item.BodyText);
myHeadline.Add(item.Headline);
}
var result = new { data1 = myHeadline, data2 = myBodyText};
return result;
}
И код фроненда
function getData(data) {
var url = "/api/Blog"
$.getJSON(url, function (data) {
for (var i = 0; i < data.data1.length; i++) {
$("#idfirst").after('<div id="post' + i + '" class="post">' +
'<div id = "posthead' + i + '" class= "posthead"></div>' +
'<div id="postbody' + i + '" class="postbody"></div>' +
'<div id="imgPost' + i + '" class="imgPost"></div></div>');
$("#posthead" + i).append($('<p>').text(data.data1[i]));
$("#postbody" + i).append($('<p>').text(data.data2[i]));
//$("#imgPost" + i).append('<img alt="img" class="imgPost" src="data:image/jpg;base64,' + data.data3 + '" />');
}
});
}
$(document).ready(function () {
getData();
})
Все работает. Все посты с базы выводятся.
Решил добавить фотки и с сделать возвращаем объект как один объект JSON. Основной код не буду показывать так как в нем не вижу смысла, объект строю из класса где три свойства. Вот он
public class GetBlogPost
{
public GetBlogPost()
{
}
public GetBlogPost(string Head, string Body, List<string> imgPost )
{
this.Headline = Head;
this.BodyText = Body;
this.Img64 = imgPost;
}
public string Headline { get; set; }
public string BodyText { get; set; }
public List<string> Img64 { get; set; }
}
Далее каждый полученный экземпляр класса пихаю в коллекцию
List<GetBlogPost> resultPost = new List<GetBlogPost>();
И ее конвертирую в JsonFile
var result2 = JsonConvert.SerializeObject(resultPost);
return result2;
И тут никак не хочет скрипт открывать на вьюхе мой файл.
Побывал всеми комбинациями. Максимум что получалось это в блоке пишется [Object, object]
Вот например вот так
$("#posthead" + i).append($('<p>').text(data.result2[i].Headline));
$("#postbody" + i).append($('<p>').text(data.result2[i].BodyText));
В студии на точке остановы он адекватно показывает JsonFile(картинку не грузит сюда, ссылка)
http://prntscr.com/kfrbiy
Теперь даже текст не выводит. Фиг с теми фотками, там легко их показать. Как мне распарсить мой объект на фронте в скрипте?
Что такое "result2" в коде?
$("#posthead" + i).append($('<p>').text(data.result2[i].Headline));
Наверное должно быть так:
$("#posthead" + i).append($('<p>').text(data[i].Headline));
Вот так оно работает с $.parseJSON(data)
<script>
function getData(data) {
var url = "/api/Blog"
$.getJSON(url, function (data)
{
var obj = $.parseJSON(data);
for (var i = 0; i < obj.length; i++)
{
$("#idfirst").after('<div id="post' + i + '" class="post">' +
'<div id = "posthead' + i + '" class= "posthead"></div>' +
'<div id="postbody' + i + '" class="postbody"></div>' +
'<div style="width:100%;" id="imgPost' + i + '" class="imgPost">
</div></div>');
$("#posthead" + i).append($('<p>').text(obj[i].Headline));
$("#postbody" + i).append($('<p>').text(obj[i].BodyText));
if (obj[i].Img64.length > 0)
{
var x = obj[i].Img64.length;
for (var y = 0; y < x; y++)
{
$("#imgPost" + i).append('<img alt="img" class="imgPost"
style="margin:10px;" src="data:image/jpg;base64,' + obj[i].Img64[y] + '"
/>');
}
}
}
});
}
$(document).ready(function ()
{
getData();
})
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости