Итак ... благодаря одному из пользователей 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);
, ничего не появится, пока не обновится ...
Что я здесь не так делаю??
Большое спасибо за любую помощь!