AUser0, верно
v_eropov,
Вы пытаетесь выдать с сервера сразу HTML, и поэтому у вас проблемы получаются.
Если уж решили делать через асинхронный (ajax) запрос - то да, выдавайте в json, кладите его в переменную, сортируйте, и рисуйте верстку уже на javascript.
И да, вам придется строить все дивы из яваскрипта и это не короткий код. Кто-то предпочитает это делать, используя js фреймворки, типа vue/react, я предпочитаю изначально из php выдать (так было еще когда не было vue/react, а был только handlebars)
<template id="mytemplate">
<div>
<div>{{var1}}</div>
<div>{{var2}}</div>
</div>
</template>
Потом селектором этот элемент найти, и копировать его столько-то раз, делая
html.replace('{{var1}}', data.var1);