Застрял с Codeigniter и jQuery.ajax - PullRequest
0 голосов
/ 05 марта 2011

Итак ... благодаря одному из пользователей stackoverflow, я попытался внедрить эту причудливую функцию в мое существующее приложение Codeigniter ...

В моем представлении у меня есть это:

<script type="text/javascript">
$(function() {
    $(".submit_op").click(function() {
        var dataString = $("#op_form").serialize();
        var url = "<?php echo site_url('submit/insert_data'); ?>";
        $.ajax({
            type: "POST",
            url: url+"/"+dataString,
            data: dataString,
            cache: false,
            success: function(html){
                //$("div#op").prepend(html); //PROBLEM HERE???
                $("div#op").prepend("<div>TEST</div>");
                $("div#op div:first").fadeIn("slow");
                //$("#debug").append("<font color=green><b>OK!</b></font> : " + dataString + "<br/>");
            },
            error: function(html){
                //$("#debug").append("<font color=red><b>ER!</b></font> : " + dataString + "<br/>");
            }
        });
        return false;
    });
});
</script>

<div id="debug"></div>

<?php
//here goes some data from db... newly added div should go in top of other divs
foreach ($some_data_sent_from_controller as $var) {
    echo "<div id=\"op\">";
    echo "<table width=\"100%\" border=\"0\">";
    //showing data
    echo "</table>";
    echo "</div>";
}

echo "<form action=\"#\" id=\"op_form\">";
//some clickable stuff...
echo br().form_submit('submit', 'OK', 'class="submit_op"');
echo "</form>";

В моем контроллере у меня есть функция, которая обрабатывает данные, отправленные из представления:

function insert_data($input) {
    $this->load->model('blah_model');
    //processing serialized data and sending it to corresponding tables via Model
    $this->blah_model->add_to_table($some_data);
    $this->blah_model->add_to_another_table($some_other_data);

}

И модель не такая большая:)

function add_to_table($data){
            //processing data...
    $insert = $this->db->insert('my_table', array('array_which_contains_actual_data'));
    if ($insert == TRUE) {
        return TRUE;
    } else {
        return FALSE;
    }
}
//etc.

НасколькоЯ могу сказать, что моя проблема не в моем шаблоне MVC, так как каждый раз, когда я отправляю форму, данные правильно вставляются во все возможные таблицы в моей реляционной БД ... Но только что добавленная строка не будет отображаться, пока я не обновлюстраницу.

Я думаю, что я делаю что-то не так в моих строках jQuery.ajax ... Если я запускаю свой скрипт с этой строкой $("div#op").prepend("<div>TEST</div>"); и когда я отправляю форму, я получаю желаемый результат- текст TEST появляется вверху моей страницы каждый раз, когда я отправляю ... Но если я изменю эту строку на $("div#op").prepend(html);, ничего не появится, пока не обновится ...

Что я здесь не так делаю??

Большое спасибо за любую помощь!

1 Ответ

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

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

function insert_data($input) {
    $str = "<div>KILLROY WAS HERE!</div>";
    echo $str; // <----- !!!!!!
}

Я вижу сообщение на своей странице ...

Теперь о других вещах ... Спасибо за мозговой штурм:)

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