目前我和我的团队正在使用Code Igniter 1.7.3,我们无法在我们的项目中使用代码点火器2.0。
反正
我制作了几个php文件,其中一个主文件使用JQuery加载主文件中某个div内的其他文件。例如,它就是这样的(它们都在CI中的views文件夹中)
<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript" src="<?php echo base_url().''?>public/scripts/jquery-1.4.4.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#insert-activity").load("<?php echo base_url().''?>system/application/views/bio.php");
});
</script>
<title>Title</title>
</head>
<body>
<div id="insert-activity"></div>
</body>
</html>
现在,它完全加载。问题是控制器加载配置文件视图
<?php
class UserProfile extends Controller {
function UserProfile()
{
parent::Controller();
}
function index()
{
$this->load->library('DX_Auth');
$this->load->helper('url');
$this->load->helper('form');
$this->load->model('userprofile_m');
$userID = $this->dx_auth->get_user_id();
$friend_ids = $this->userprofile_m->get_friends_ids($userID);
$data['interest'] = $this->userprofile_m->get_user_intersts($userID);
//$data['broadcasts'] = $this->userprofile_m->get_broadcasts($userID);
$data['friendID'] = $friend_ids;
//$data['friendsBroadcasts'] = $this->userprofile_m->get_friends_broadcasts($userID,$friend_ids);
$this->load->view('profile', $data);
} ?>
这里的问题是我想要检索的一些数据转到bio.php,因为profile.php会在div中加载bio.php。
每当我点击获取生物链接时,我希望它再次检索信息并将其放入bio.php,而JQuery在profile.php中加载bio.php
以下是bio.php以防万一
<!-- PHP should insert the user's bio here -->
<div id="activity-header" class="background"> <!-- activity header start DO NOT MODIFY-->
<h1>Bio</h1>
</div> <!-- activity header end DO NOT MODIFY-->
<div id="activity-feed"> <!-- activity div for JQuery DO NOT STYLE THIS DIV-->
<div> <!-- name start -->
<div> <p <p class="special-p">Name:</p> <hr class="special-hr"> </div>
<p class="used-p">some guy</p>
</div> <!-- name end -->
<div> <!-- description start -->
<div> <p <p class="special-p">Description:</p> <hr> </div>
<p class="used-p">I don't like talking about myself... I'm emo .. for some reason</p>
</div> <!-- description end -->
<div> <!-- interests start -->
<div> <p class="special-p">Interests:</p> <hr class="special-hr2"> </div>
<p class="used-p">I am interested in:</p>
<ul>
<li>something</li>
<li>Food</li>
<li>Travel</li>
<li>Fishing</li>
<li>Pokemon</li>
<li>More Pokemon</li>
<li>POKEMOOONN!!!!</li>
</ul>
</div> <!-- interests start -->
</div> <!-- activity div for JQuery -->
这是@kevtrout教给我的代码。仍然,该页面不会加载div
这是控制器userProfile
中的函数biofunction bio(){
$this->load->library('DX_Auth');
$this->load->helper('url');
$this->load->helper('form');
$this->load->model('userprofile_m');
$userID = $this->dx_auth->get_user_id();
$friend_ids = $this->userprofile_m->get_friends_ids($userID);
$data['interest'] = $this->userprofile_m->get_user_intersts($userID);
//$data['broadcasts'] = $this->userprofile_m->get_broadcasts($userID);
$data['friendID'] = $friend_ids;
//$data['friendsBroadcasts'] = $this->userprofile_m->get_friends_broadcasts($userID,$friend_ids);
$bio_view = $this->load->view('bio',$data,true);
return $bio_view;
}
这是视图profile.php中的JQuery,它想要加载视图bio.php并将数据发送到..这是在$(文档).ready
之后立即完成的。$.post("<?php echo site_url('userProfile/bio');?>",{user_id: 777},function(){
$("#insert-activity").html(data);
},html);
答案 0 :(得分:1)
1) 我可能会创建一个控制器/方法来加载生物信息然后生物视图。 然后使用你的ajax加载那个控制器/方法。
好的,您需要向UserProfile控制器添加一个名为get_bio的方法。该函数与索引函数几乎相同,但它在末尾加载bio视图而不是profile视图。 然后将您的JQuery更改为:
$("#insert-activity").load("<?php echo site_url('userprofile/get_bio'); ?>");
2) ..除非有一些原因你真的需要使用ajax加载生物视图,你可以这样做
<div id="insert-activity">
<? $this->load->view('bio'); ?>
</div>
因为那时数据将在生物视图中可用。
答案 1 :(得分:0)
在您对@icchanbobot的评论中,您声明您正在尝试使用控制器从数据库获取生物信息并将其返回到jquery脚本,但它无效。我提供以下内容来尝试和帮助。如果这是您正在追求的方法,或者这对您来说是显而易见的,并且还有其他一些因素会使这一过程变得困难,请告诉我。
在我的脚本中,当jquery检索数据库信息并将其注入页面时,我遵循以下大纲。
$.post(
"<?php echo site_url('controller_x/get_bio');?>",
{user_id: userID},
function(data){
$('#insert-activity").html(data);
},
html
);
Controller_x函数get_bio()与您的数据库交互以提取数据并加载视图。使用$this->load->view();
的{{3}},我将视图html作为字符串返回并将其分配给变量,然后将变量返回到third parameter调用。
class Controller_x extends Controller(){
function get_bio(){
$user_id = $this->input->post('user_id');
$this->load->model('bio_model');
$data['bio'] = $this->bio_model->get_bio($user_id);
$bio_view = $this->load->view('bio',$data,true);
return $bio_view;
}
}
上面$ .post()中的回调函数获取返回的数据并将其注入指定的div中。 'html'告诉脚本期望什么类型的数据(html,json)。我相信你可以离开它,但不确定没有测试。
希望这可以澄清您是在正确的轨道上,还是提供了缺失的细节。
祝你好运。