Шаблоны просмотра кода - PullRequest
0 голосов
/ 19 марта 2011

мой вопрос: я использую codeigniter и использую базовые шаблоны для своего сайта, поэтому мой заголовок будет в отдельном файле с именем header.php и footer в файле footer.php. Главные страницы сайта находятся в переменных, называемых maincontent, поэтому в моем maincontent.php я бы имел следующие строки:

<?php
  $this->load->view('includes/header');
  $this->load->view($maincontent);
  $this->load->view('includes/footer');
?>

все работает нормально, пока я не захочу сделать какую-то базовую форму ajax. Я хочу загрузить сегмент страницы из файла и вставить его в загруженную в данный момент страницу с целевым идентификатором #invoiceforms. Как мне получить ajax и jquery для загрузки только нужного мне сегмента и вставить его в текущий целевой div без загрузки заголовка и нижнего колонтитула снова и все такое. Я думал об использовании jquery load, поэтому я бы сделал что-то вроде этого:

$('#invoiceforms').load('path/to/page');
//or
$.get('path/to/page',function(){etc});

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

Это та часть, которую я не понимаю. У меня есть этот jquery, который выбирает HTML-таблицу со страницы:

$.get('../ajaxops/loadinvoice',function(data){
                $('#invoiceform').html('<table>'+data+'</table>');
            });

но когда в целевом элементе div показывается, что я хотел бы, чтобы таблица отображалась, он отображает только текст таблицы, но не саму структуру таблицы. Но используя firebug, страница пересылается вместе с разметкой таблицы. в чем здесь может быть проблема?

J

1 Ответ

1 голос
/ 19 марта 2011

Я использую отдельный контроллер только для функций ajax, которые в основном просто выводят HTML, который я собираюсь вставить в элемент контейнера.

Например, для заполнения каскадного выбора, мой jquery:

$(".addform #country, .searchform #country").change(function () {
        var p = $("#country option:selected").val();
        $('#state').load('/ajax/states/get', {'country_id': p, 'csrf_token_name': cct}, function (data) {this.value = data;})
;
}).change();

функция моего контроллера

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class States extends CI_Controller {

    function __construct()
    {
        parent::__construct();
        $this->load->library('form_validation');
    }

        // populate state dropdown via AJAX, based on country selected
        function get() {
                $this->form_validation->set_rules('country_id', 'country', 'trim|required|strip_tags|is_natural_no_zero');
                $data = null;

                if($this->form_validation->run() == TRUE ) {
                        $cid = $this->input->post('country_id');

                        $this->load->model('Mgeography');
                        $data['arr'] = $this->Mgeography->get_all_state_by_country_id($cid);

                        $data['optype'] = "select";
                        $data['label'] = "state";
                        $data['key'] = "state";
                        $this->load->view('ajax_view',$data);
                }
        }
}
/* End of file states.php */
/* Location: ./application/controllers/ajax/states.php */

и мой взгляд

if ($optype == "select") {
    echo "<option value=\"0\">Choose ${label}</option>";
    foreach($arr as $row) {
        echo "<option value=\"" . $row['id'] . "\">" . $row[$key] . "</option>";
    }
}

также не забывайте о токене CSRF в своих запросах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...