2015-12-10 2 views
0

Мне было интересно, что, что я делаю, все в порядке, это работает, но у меня есть эта навязчивая идея, чтобы найти возможный лучший способ сделать это. В основном я должен служить профилю пользователя в «Modal-box». Таким образом, пользователь нажимает кнопку/ссылку, и это окно динамически генерируется, а его содержимое-div заполняется результатом запроса AJAX. На самом деле запрос AJAX вызывает php-скрипт, который получает данные из базы данных MySQL, получает шаблон HTML через буфер вывода php и сохраняет этот файл в виде строки в переменной, затем эта переменная хранится в массиве json- кодируются и повторил, как что-то вроде этого:Как обрабатывать много HTML в результате вызова Ajax

[ { success: 1, html: "HTML already formatted with data from the PHP script" } ] 

на стороне клиента, когда мой AJAX вызов делается, я просто заполнить мою модальное содержание DIV с HTML, так что есть что-то вроде этого:

.done(function (srv-data) { 

    if (srv-data.success === 1){ 

     $("#modal-content").html(srv-data.html); 

    } 

}); 

Является ли это разумным способом обслуживания моего HTML-кода передним интерфейсом? Или есть лучшие способы сделать что-то подобное? Я использую это решение только для того случая, когда у меня много HTML для рендеринга с большим количеством полей в базе данных для работы, другие ответы AJAX просто зацикливаются на объекте и отображаются на стороне клиента.

Спасибо за ваше время.

+3

«Много» для приложения интрасети сильно отличается от «большого» для интернет-или мобильного приложения. «Много» для IE 6 сильно отличается от «большого» Edge. Я говорю, что ответ будет основан на основном мнении. – Sheepy

+0

Я не знаю, действительно ли я получил то, что вы сказали. Но вы должны сгенерировать весь HTML на стороне клиента. Я не вижу смысла создавать другой .html-файл для каждого пользователя. Итак, вы должны передать HTML в JSON, а затем сгенерировать HTML с Javascript. – pabloFdz

ответ

0

Я не знаю, если это лучший способ делать вещи, но вот то, что я обычно делаю, когда я есть много данных, которые нужно передать модальным.

Я отправляю ответ как JSON с сервера.

Так запрос AJAX приведет к чему-то вроде этого

{ 
    amount: 100, 
    approved: 0, 
    approved_at: "0000-00-00 00:00:00", 
    approved_by: "", 
    created_at: "2015-12-05 16:24:33", 
    id: 2, 
    overhead: "dummy data", 
    remarks: "Head Approved", 
    request_id: 1500002, 
    type: "advance", 
    updated_at: "2015-12-05 16:29:48", 
} 

Поскольку у меня уже есть структура для модальных, я могу использовать JQuery, чтобы вставить значения в модальной.

.done(function(data){ 
var json = jQuery.parseJSON(
$('#proj_id').html(json.proj_id); 
$('#overhead').html(json.overhead); 
$('#type').html(json.type); 
$('#amount').html(json.amount); 
$('#projectModal').modal('show'); 
} 

В этом методе, мы можем отправить только те данные, которые должны быть отправлены с сервера и обработка происходит на стороне клиента. Таким образом, накладные расходы на сеть минимальны. Кроме того, если мы обслуживаем JSON, то любой клиент может использовать данные (Android/Web)

+0

Спасибо за ваш ответ, если бы я мог использовать предварительно отформатированный модальный, который бы хорошо работал. Но модальный, который я использую, динамически генерируется из моего js-класса, и его скелет будет обслуживать другие разделы приложения. У меня может быть профиль пользователя или страница форума или список онлайн-пользователей в этом модале. Поэтому я должен повторно использовать базовую разметку модального для других обязанностей, и именно поэтому я пытаюсь загрузить уже отформатированный HTML-файл в модальный контент. – APForge

+0

О, тогда отправка HTML - неплохая идея. В конечном итоге вы можете отправить гораздо больше данных с сервера. Если у вас есть конечный список модалов, могу предложить вам разобрать его на стороне клиента с различными функциями и отправить еще одно поле 'type' с помощью JSON, чтобы определить, является ли профиль пользователя или страница форума и так далее. – GokulSrinivas

+0

Спасибо, человек, в конце концов, полностью разделил данные с точки зрения с помощью Mustache.js – APForge

0

Попробуйте это:

$.ajax({ 
    url:"test.php", 
    type:"POST", 
    dataType:"json", 
    data:{ 

     } 
}).done(function(msg){ 
    $("#modal-content").html(msg); 

    }); 

ваш код написать на test.php

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