Jquery CodeIgniter赢得';在通过AJAX加载时,是否不传递$data?
我正在一个数据库驱动的网站上工作,我希望我的链接的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: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传递到模型,以加载数据并将数据处理到视图中。调用我
<?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">▶</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">▶</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 -->