У меня есть проект CI и jQuery. У меня есть сайт, который ищет мой db. Он состоит из аккордеона jQueryUI. Один раздел содержит поля ввода для расширенного поиска, а другой раздел используется для отображения таблицы html с результатами.
Параметры поиска из первого раздела отправляются на сервер с помощью сообщения ajax. Это сбой сервера и либо сообщение об ошибке в стиле html, либо таблица html с результатами (а затем возвращаются некоторые другие вещи, такие как количество найденных результатов, сколько времени и т.д.).
Назад на клиенте jQuery должен быть в состоянии различать два. Лучше всего было бы передать другую переменную "search_success". Если "search_success" является ложным, ошибка добавляется к разделу 1 над полями ввода. В противном случае блок html отображается во втором разделе, а jQuery открывает раздел 2.
Прямо сейчас я возвращаю простой html с 0 или 1 добавленным. Этот первый символ отрубается jQuery и используется для различения двух возможных результатов. Это отвратительно.
После прочтения этого сообщения об отправке массива с помощью json я подумал о решении этой проблемы в json. Я намеревался построить что-то вроде
echo json_encode(array('search_success' => $search_success, 'html' => $html));
Это позволит легко структурировать данные. Проблема в том, что мой "html" - это не простая переменная php, а представление:
<?php
$template = array('table_open' => '<table id="table" data-url="'.base_url().'">');
$this->table->set_template($template);
$this->table->set_heading($table_header);
echo $this->table->generate($table);
?>
Эта точка зрения также может быть намного сложнее. Конечно, я мог бы отказаться от CI MVC и сохранить весь html в php-строке, которую я мог бы преобразовать в json с указанным выше кодом. Тем не менее, это приведет к тому, что цель хранения всей html-части будет отображаться в представлении.
Есть ли способ обернуть весь мой взгляд в json, не отказываясь от моей архитектуры представления? Или какой подход будет более подходящим для этой проблемы?
Благодарю, singultus
Чтобы довести эту тему до конца, ответ прост:
$json['html'] = $this->load->view('myfile', '', true); // 3. param 'true'!
$json['other_stuff'] = $other stuff;
echo json_encode($json);
См. Здесь в самом конце. Такой подход позволяет хорошо структурировать ответ на сервер.
Все кредиты @koala_dev!