Я нашел хороший пример того, как использовать AJAX в jQuery по этой ссылке: http://yensdesign.com/2008/12/how-to-load-content-via-ajax-in-jquery/
Я добавил содержимое из файла index.html
файл view.php
(я использую CodeIgniter).
Все выглядит нормально, но если вы хотите переключиться на другой раздел, содержимое страницы не изменяется (тот же контент, что и раньше).
Я думаю, может быть, проблема в файле menu.js
для передачи данных в файл CodeIgniter view.php
?
Не могли бы вы дать мне какие-либо предложения о том, как я могу решить эту проблему? Надеюсь, это будет полезно и для других.
Файл Menu.js:
$(document).ready(function(){
//References
var sections = $("#menu li");
var loading = $("#loading");
var content = $("#content");
//Manage click events
sections.click(function(){
//show the loading bar
showLoading();
//load selected section
switch(this.id){
case "home":
content.slideUp();
content.load("sections.html #section_home", hideLoading);
content.slideDown();
break;
case "news":
content.slideUp();
content.load("sections.html #section_news", hideLoading);
content.slideDown();
break;
case "interviews":
content.slideUp();
content.load("sections.html #section_interviews", hideLoading);
content.slideDown();
break;
case "external":
content.slideUp();
content.load("external.html", hideLoading);
content.slideDown();
break;
default:
//hide loading bar if there is no selected section
hideLoading();
break;
}
});
//show loading bar
function showLoading(){
loading
.css({visibility:"visible"})
.css({opacity:"1"})
.css({display:"block"})
;
}
//hide loading bar
function hideLoading(){
loading.fadeTo(1000, 0);
};
});
Анимация из javascript работает (загрузка/контент/разделы), но реальный контент не загружается из html файла.
Как я уже сказал, похоже, что этот скрипт не может загружать контент в файл view.php (который является файлом представления CodeIgniter)
Любая помощь высоко ценится.
CodeIgniter должен обслуживать sections.html
и external.html
. По умолчанию это не будет сделано.
Предполагая, что view.php
используется для URL http://example.com/index.php/mycontroller/view
, тогда jQuery отправит запросы по следующим URL-адресам.
http://example.com/index.php/mycontroller/sections.html
http://example.com/index.php/mycontroller/external.html
Если вы не сказали CodeIgniter, что делать для этих запросов, CodeIgniter вернет 404, а содержимое вашей страницы не будет обновлено.
content.load("<?=base_url()?>sections.html #section_home", hideLoading);
Ничто не меняется. Там нет ошибки 404. Содержание в других разделах такое же, как и в первом разделе. Также, если я добавлю section
функций в свой контроллер, с оператором echo, слайд просто поднимется, и ничего не произойдет.
function sections() { $this->load->view('view/sections.html'); }