Jquery CodeIgniter赢得';在通过AJAX加载时,是否不传递$data?

Jquery CodeIgniter赢得';在通过AJAX加载时,是否不传递$data?,jquery,codeigniter,variables,mobile,undefined,Jquery,Codeigniter,Variables,Mobile,Undefined,我正在一个数据库驱动的网站上工作,我希望我的链接的URI段从我的数据库加载相应的数据。该站点运行在CodeIgniter 2.1.4上,JQuery Mobile通过AJAX加载页面。下面是我的URL示例 site.com/browse(运行索引功能,加载艺术家列表) site.com/browse/artist/album(运行artist函数,将第三个URI段album作为参数传递给数据模型,加载该艺术家的相册列表) 我了解如何将ID从URL传递到模型,以加载数据并将数据处理到视图中。调用我

我正在一个数据库驱动的网站上工作,我希望我的链接的URI段从我的数据库加载相应的数据。该站点运行在CodeIgniter 2.1.4上,JQuery Mobile通过AJAX加载页面。下面是我的URL示例

site.com/browse(运行索引功能,加载艺术家列表)

site.com/browse/artist/album(运行artist函数,将第三个URI段album作为参数传递给数据模型,加载该艺术家的相册列表)

我了解如何将ID从URL传递到模型,以加载数据并将数据处理到视图中。调用我的Browse类的index函数时,一切正常。我可以创建一个艺术家名单。调用Artist函数时,URI段被传递到模型并加载数据,但$data似乎没有传递到我的视图,因此在尝试显示数据时,我不断收到未定义的变量错误

获取_data.php:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Get_data extends CI_Model {

function getAllArtists() {

    $query = $this->db->query('SELECT DISTINCT ARTIST FROM data ORDER BY ARTIST');

    if($query->num_rows() > 0) {
        foreach($query->result_array() as $row){
        $data[] = $row;
        }
        return $data;
    }
}


function getAllAlbums($artist) {
    //Get artist from URI segment
    $artist = urldecode($this->uri->segment(3));
    $query = $this->db->query('SELECT DISTINCT ALBUM, ARTIST FROM data WHERE ARTIST = "'.$artist.'" ORDER BY ALBUM');

    if($query->num_rows() > 0) {
        foreach($query->result_array() as $row){
        $data[] = $row;
        }
        return $data;
    }
}

}

在模型文件中,我认为您不需要使用“$artist=urldecode($this->uri->segment(3));”因为您已经将其作为参数传递到模型函数中。但您可以尝试在控制器中使用它来获取艺术家信息。我看不出你们利用了CodeIgniter中的路由类。使用这种框架不是很好的做法。如果要扩展CI_控制器,请编写一个函数,例如“
\u render()
”,该函数将接受一个参数(或多个参数取决于设计)
\u render()
应该加载视图,以后只需执行
$this->\u render('/p/artist\u view')
。(不需要通过函数传递
$data
,因为它的“globaly”设置为
$this->data['which']
这只是给你的一个提示,现在我认为你没有将正确的参数传递给视图……在你的设计中,你应该将整个$this->数据作为第二个参数传递给load_view函数。例如,我的render fcn看起来像
公共函数render($view_path){$this->load->view('template/header_view');$this->load->view('template/navbar\u view',$this->data);$this->load->view($view\u path.''u view',$this->data);$this->load->view('template/footer\u view');}
如果我想将数据传递给视图,我只需使用
$this->data['title']='Codeigniter';
我的控制器扩展的任何控制器中的任何位置如果您通过ajax调用该函数,则需要将视图作为数据返回(使用第三个参数),然后将其回显。
$foo=$this->load->view('t/header',$data,true);回显$foo;
@Kyslik非常感谢您的帮助!
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Browse extends CI_Controller {

public function index(){
    //Page Data
    $data['title'] = 'Site: Browse';
    $this->load->model('get_data');
    $data['rows'] = $this->get_data->getAllArtists();
            $rows = $this->data['rows'];    

    //Page Views
    $this->load->view('t/header', $data);
    $this->load->view('p/browse', $data);
    $this->load->view('t/footer');

}

public function artist($artist){

    //URL Decode
    $artist = urldecode($artist);
    //Page Data
    $data['title'] = 'Site: '.$artist;

    //Load model and retrieve data from database
    $this->load->model('get_data');
    $this->data['rows'] = $this->get_data->getAllAlbums($artist);
    $rows = $this->data['rows'];      

    //Page Views
    $this->load->view('t/header', $data);
    $this->load->view('p/artist', $data);
    $this->load->view('t/footer');


}


public function album($album){

    //Page Data
    $data['title'] = 'site: '.urldecode($album);

    //Load model and retrieve data from database
    $this->load->model('get_data');
    $this->data['rows'] = $this->get_data->getAllSongs($album);
    $rows = $this->data['rows'];

    //Page Views
    $this->load->view('t/header', $data);
    $this->load->view('p/artist', $data);
    $this->load->view('t/footer');


    }



}
<!-- Start content.php -->
<div data-role="page">

<div data-role="header" data-id="header" data-position="fixed">
    <div data-role="navbar">
        <ul>
            <li><a href="http://www.site.com/home" class="" data-transition="fade">Home</a></li>
            <li><a href="http://www.site.com/browse" class="" data-transition="fade">Browse</a></li>
            <li><a href="http://www.site.com/about" class="" data-transition="fade">About</a></li>
            <li><a href="javascript:void(0)"id ="toggle">&#9654;</a></li>
        </ul>
    </div>
</div><!-- /jqm-header -->


<div data-role="content">

<ul id="song_list" data-role="listview" data-filter="true">
<?php foreach ($rows as $r) {?><li data-icon="false"><a data-transition="slide" href="http://www.site.com/browse/artist/<?php echo urlencode($r['ARTIST']); ?>"><?php echo $r['ARTIST']; ?></a></li><?php };?>
</ul>

</div>


<div data-role="footer">
    <h4>site.com</h4>
    <h5><?php echo $this->benchmark->elapsed_time();?></h5>
</div><!-- /jqm-footer -->
<!-- Start content.php -->
<div data-role="page">

<div data-role="header" data-id="header" data-position="fixed">
    <div data-role="navbar">
        <ul>
            <li><a href="http://www.site.com/home" class="" data-transition="fade">Home</a></li>
            <li><a href="http://www.site.com/browse" class="" data-transition="fade">Browse</a></li>
            <li><a href="http://www.site.com/about" class="" data-transition="fade">About</a></li>
            <li><a href="javascript:void(0)"id ="toggle">&#9654;</a></li>
        </ul>
    </div>
</div><!-- /jqm-header -->


<div data-role="content">

<ul id="song_list" data-role="listview" data-filter="true">
<li data-icon="false"><a data-rel="back">Back</a></li>
<?php foreach ($rows as $r) {?><li data-icon="false"><a data-transition="slide" href="http://www.site.com/browse/album/<?php echo urlencode($r['ALBUM']); ?>"><?php echo $r['ALBUM']; ?></a></li><?php };?>
</ul>

</div>


<div data-role="footer">
    <h4>site.com</h4>
    <h5><?php echo $this->benchmark->elapsed_time();?></h5>
</div><!-- /jqm-footer -->