我正在尝试按照此处的教程进行操作:http://www.ifadey.com/2010/06/crud-using-jquery-and-codeigniter/我的代码已更新,以适应CI和JQ更新。但是当尝试从我的数据库加载数据并在我的视图中显示它时,没有任何反应/显示。所有javascript(JQ)代码链接都可以正常工作,所有内容都使用MAMP在本地运行。非常感谢任何和所有帮助。
我的代码如下,
型号:
<?php
class mUsers extends CI_Model {
public function getAll() {
//get all records from users table
$this->db->_compile_select();
$query=$this->db->get('users')->result();
//OR $query = $this->db->get('users');
echo $this->db->last_query();
if( $query->num_rows() > 0 ) {
return $query->result();
} else {
return array();
}
} //end getAll
} //end class
?>
控制器:
<?php
class Site extends CI_Controller{
public function index(){
$this->load->model('mUsers');
$this->load->view('home');
}
public function read(){
header('Content-Type: application/json',true);
echo json_encode($this->mUsers->getAll());
}
}
?>
查看:
<html>
<head>
<title>Test</title>
<base href="<?php echo base_url(); ?>" />
<link type="text/css" rel="stylesheet" href="css/styles.css" />
<link type="text/css" rel="stylesheet" href="css/ui-lightness/jquery-ui-1.8.12.custom.css" />
</head>
<body>
<div id="tabs">
<ul>
<li><a href="#read">Read</a></li>
<li><a href="#create">Create</a></li>
</ul>
<div id="read">
<table id="records"></table>
</div>
<div id="create">Create form goes here...</div>
</div> <!-- end tabs -->
<script type="text/javascript" src="js/jquery-1.6.1.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.8.13.custom.min.js"></script>
<script type="text/javascript" src="js/jquery.tmpl.js"></script>
<script type="text/template" id="readTemplate">
<tr>
<td>${id}</td>
<td>${name}</td>
<td>${email}</td>
</tr>
</script>
<script type="text/javascript" src="js/all.js"></script>
</body>
</html>
答案 0 :(得分:0)
我假设您没有自动加载mUsers模型,因此Site-&gt; read()方法不会从数据库输出任何数据,因为它不知道模型的getAll()方法。
您应该在需要它的每个方法中加载模型,或者更确切地说在构造函数中加载模型,因为站点控制器的大多数方法都可能使用它:
class Site extends CI_Controller
{
function __construct()
{
parent::__construct();
$this->load->model('mUsers');
}
function index()
{
$this->load->view('home');
}
function read()
{
header('Content-Type: application/json',true);
echo json_encode($this->mUsers->getAll());
}
}
答案 1 :(得分:0)
有一个关于nettuts模板的优秀教程。
尝试将模板脚本更改为此
<script id="readTemplates" type="text/x-jquery-tmpl">
我不是真的在模板上,但你不需要定义$ Id $ name $ email?这是我的一个模板从twitter获取内容的示例。此信息可以从萤火虫收到
<script id="tweets" type="text/x-jquery-tmpl">
<li class="display">
<img src="${imgSource}" alt="${userName}" />
<h4> ${username} </h4>
<p> ${tweet} </p>
<hr />
</li>
</script>
<ul id="twitters"></ul>
<script type="text/javascript">
$.ajax({
type : 'GET',
dataType : 'jsonp',
url : 'http://search.twitter.com/search.json?q=my id',
success : function(tweets) {
var twitter = $.map(tweets.results, function(obj, index) {
return {
username : obj.from_user,
tweet : obj.text,
imgSource : obj.profile_image_url,
geo : obj.geo
};
});
$('#tweets').tmpl(twitter).appendTo('#twitters');
}
});
</script>
请注意,我使用的返回值是在脚本底部定义的。这可能无法解决您的问题,但可以让您更好地了解模板是如何工作的
答案 2 :(得分:0)
终于明白了。 Ajax调用应该包含.tmpl,而不是.render:
$.ajax({
url: 'index.php/site/read',
dataType: 'json',
success: function( response ) {
$( '#readTemplate' ).tmpl( response ).appendTo( "#records" );