У меня есть вкладки, содержимое которых является полностью функциональными частями моего сайта.codeigniter и содержимое вкладки
Например, в моей области администрирования у меня есть вкладки [добавить/удалить альбом] [добавить фото] [удалить фото]. Я технически разделяю админ-зону через вкладки.
Я использую ajax для загрузки содержимого на эти вкладки. область содержимого вкладки - это div.
Точка зрения внутри область содержимого вкладки также использует ajax для загрузки материала. Это вызовы ajax, которые работают внутри области содержимого вкладки.
Все работает нормально, пока вид внутри области содержимого вкладки остается таким же или только часть его изменяется. Но когда определенные взаимодействия внутри области содержимого вкладки возвращают совершенно новое представление, область содержимого вкладки не будет отображать их.
Я знаю, что происходит, так как это новое представление, которое возвращается, не передается в область содержимого вкладки div.
В firebug, я вижу, что ответ функции успеха ajax показывает новый вид, который возвращается. Но я не знаю, как передать это новое представление в область содержимого вкладки.
Я был бы признателен, если бы кто-нибудь мог помочь мне объяснить, как это можно решить или как содержимое внутри вкладок управляется в CI.
adminTabsview.php
<ul id="adminTabs">
<li ><?php echo anchor('#album_addDelete', 'Album Add/Delete'); ?></li>
</ul>
<div id="adminTabsContent"></div>
$(document).ready(function(){
$('#adminTabs a').on({
click: function (evt){
evt.preventDefault();
var page = this.hash.substr(1);
adminTabsAjaxCall(page);
}
});
});
function adminTabsAjaxCall ($data){
$.ajax({
type: "POST",
url: "index.php/adminsite_controller/"+ $data + "/",
dataType: "html",
data: $data,
statusCode: {removed}
},
success: adminTabContent
});
function adminTabContent (data){
$('#adminTabsContent').html(data);
}
albumsEditDeleteView.php
(this is a view that gets loaded into the tab contentarea div)
<div id="adminTabsContent">
<div id="albumList">
<ul>
<li>
<a href="#">Asdf</a>
<a class="add" href="http://localhost/myPHP/photoalbums/index.php/Albums_Controller/add_album/301/Asdf/1/28/0">[ add ]</a>
<a class="delete" href="http://localhost/myPHP/photoalbums/index.php/Albums_Controller/delete_album/301/Asdf/1/28/0">[ delete ]</a>
</li>
</ul>
</div>
</div>
$(document).ready(function(){
$('#albumList').on({
click: function (evt){
evt.preventDefault();
var $clickedElement = evt.target.tagName;
if ($clickedElement == 'A'){
var urlarray = url.split('/');
$chosen.albumid = urlarray[8];
$chosen.albumname = urlarray[9];
$chosen.lft = urlarray[10];
$chosen.rgt = urlarray[11];
$chosen.nodeDepth = urlarray[12];
if ($class == 'add'){
albumajaxcall($chosen);
}
if ($class == 'delete'){
deleteajaxcall($chosen);
}
}
}
});
});
function albumajaxcall($data){
$.ajax({
type: "POST",
url: "index.php/Adminsite_Controller/add_album/",
dataType: "json",
data: $data,
statusCode: {removed}
},
success: adminTabContent
});
}
function adminTabContent(data){
$('#adminTabsContent').html(data);
}
//heres the view file that has to replace the original view inside
//tabcontent area
//addnode_view.php
<?php echo form_open('Albums_Controller/update_albumSet');?>
<input type="text" name="newAlbum" id="newAlbum" value=""/>
<input type="submit" name="submit" value="Submit" />
<?php echo form_close();?>
<?php
//heres the controller function
function add_album(){
$levelData ['albumid'] = $this->input->post('albumid');
<!-- removed-->
$levelData ['main_content'] = 'addnode_view';
$this->load->view('includes/template', $levelData);
}
//And heres the controller method that loads
//the original page (albumsEditDeleteView.php) - this is the original view
//that gets loaded into the tab- I get stuck when this view
//has to be **totally** replaced through links in the view)
function album_addDelete(){
$allNodes ['myAlbumList'] = $this->Albums_Model->get_albumList();
echo $this->load->view('albumsEditDelete_view', $allNodes);
}
спасибо заранее.
Было бы больно, если бы вы уточнили вопрос, о котором вы просите. Также, пожалуйста, разместите соответствующий код. –
Как я могу передать новый вид области содержимого вкладки? –
Второй раз, прочитав вопрос и все еще немного нечеткий, но спасибо за то, что он вставил код. 1. Вы предупредили «данные» от adminTabContent, чтобы узнать, заполнено ли что-то? 2. Вы уверены, что хотите использовать php-стиль «$ data» в adminTabsAjaxCall? 3. С первого взгляда, похоже, есть дополнительный} в коде ajax? – MikeCruz13