在JQuery的代码点火器中将数据传递给多个页面的问题

时间:2011-03-25 14:46:45

标签: php jquery codeigniter

目前我和我的团队正在使用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

中的函数bio
function 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);

2 个答案:

答案 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)。我相信你可以离开它,但不确定没有测试。

希望这可以澄清您是在正确的轨道上,还是提供了缺失的细节。

祝你好运。