Новичок: CodeIgniter, JQuery & Ajax - не возвращает / не отображает значения - PullRequest
0 голосов
/ 08 июня 2011

Я пытаюсь следовать учебникам, найденным здесь: 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>

Ответы [ 3 ]

0 голосов
/ 09 июня 2011

Существует превосходное учебное пособие по созданию шаблонов для сетей.

Попробуйте изменить шаблонный скрипт на этот

<script id="readTemplates" type="text/x-jquery-tmpl">

Я не очень разбираюсь в шаблонах, но вам не нужно определять $ Id $ name $ email? Это пример того, как один из моих шаблонов получает информацию из твиттера. Эту информацию можно получить от firebug

 <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>  

Обратите внимание, что возвращаемые значения, которые я использую, определены в нижней части скрипта. Это может не решить вашу проблему, но даст вам лучшее представление о том, как работает шаблон

0 голосов
/ 09 июня 2011

Наконец-то разобрался. Вызов Ajax должен содержать .tmpl, а не .render:

$.ajax({
        url: 'index.php/site/read',
        dataType: 'json',
        success: function( response ) {
             $( '#readTemplate' ).tmpl( response ).appendTo( "#records" );
0 голосов
/ 08 июня 2011

Я предполагаю, что вы не загружаете модель mUsers, поэтому метод Site-> 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());
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...