Как передать html и логическую информацию после вызова ajax с CI

0

У меня есть проект 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

  • 0
    Ваш вопрос немного расплывчатый - какую логику вам нужно обрабатывать, и какие образцы html-данных будут с сервера?
  • 0
    Я надеюсь, что редактирование прояснит проблему достаточно.
Показать ещё 2 комментария
Теги:
codeigniter

1 ответ

0
Лучший ответ

Чтобы довести эту тему до конца, ответ прост:

$json['html'] = $this->load->view('myfile', '', true); // 3. param 'true'!
$json['other_stuff'] = $other stuff;
echo json_encode($json);

См. Здесь в самом конце. Такой подход позволяет хорошо структурировать ответ на сервер.

Все кредиты @koala_dev!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню