2012-02-21 69 views
0

做到这一点查询,这是控制器方法我怎样才能笨

public function ajaxLoad() 
{ 
    $data['query'] = $this->db->query("SELECT * FROM items ORDER BY id DESC"); 
    $data['content'] = $this->load->view('item', $data, true); 
    $data = json_encode($data); 
    echo $data; 
} 

,这是调用AJAX

var tempScrollTop, currentScrollTop = 0; 
$(document).scroll(function(){ 

currentScrollTop = $(document).scrollTop(); 

if (tempScrollTop < currentScrollTop) 
{ 
    var result = currentScrollTop % 100; 
    if(result == 0) 
    { 
     $.ajax({ 
      url: "ajax/load", 
      type: "POST", 
      success: function(res){ 

      $("#content").html(res); 

      } 
     }); 
    } 
} 
else if (tempScrollTop > currentScrollTop) 
{ 
    var result = currentScrollTop % 100; 
    if(result == 0) 
    { 
     $("#content").text("Вверх запрос " + result); 
    } 
} 

tempScrollTop = currentScrollTop; 
}) 

的问题,我认为我无法得到的部分JS一个页面与查询内容,然后json_encode转移到JavaScript,如果我删除

$data['query'] = $this->db->query("SELECT * FROM items ORDER BY id DESC"); 

和将其更改为

$data['content'] = $this->load->view('item', null, true); 

因此如果没有$ data对象,它就OK了。

那么它自带空,但我需要的数据库行中的内容显示

我怎样才能解决这个问题?

和echo $ data; - 它只是将数据传输到js ??的方法,我试图返回$ data ;,但那不起作用:(

并且主要的问题是PHP使用foreach函数生成页面通过循环生成记录,但如果我把这些记录之一与ajax将部分变量内部的变量成为数据库查询的值??,或者我需要设置值与js ??

我对此感到困惑,对不起,如果我错了,你能帮帮我吗?

所以这是如何通过网页加载时看起来由PHP生成的页面:

<? $i = 1 ?> 
<? foreach($query->result() as $q): ?> 



<? 
$milliseconds = $q->end; 
//echo $dd; 
//echo time(); 
/* 
$year = date('y', $t); 
$month = date('m', $t); 
$day = date('d', $t); 
$hour = date('h', $t); 
$minute = date('i', $t); 
$second = date('s', $t); 
*/ 
$d = new Datecalc; 
$begin = date("Y-m-d H:i:s"); 
$end = date($q->end); 
#$date = $d->dateDiff($begin , $end); 
//$begin = strtotime($begin); 
//$end = strtotime($q->end); 
$d->dateDiff($begin, $end); 
//echo $d->day; 

$desc = substr($q->desc, 0, 225); 
if(strlen($desc) > 180) 
{ 
    $desc = $desc."..."; 
} 
?> 
<input type="hidden" value="<?= $milliseconds ?>" id="milliseconds_<?= $q->id ?>" /> 
<div class="item" id="item_<?= $q->id ?>"> 
     <? if(!empty($_SESSION['role']) && $_SESSION['role'] == 'admin'): ?> 
     <div class="admin_delete"> 
     <a href="<?= base_url() ?>delete/<?= $q->id ?>"><?= img('css/img/admin_delete.png'); ?></a> 
     </div> 

     <? endif; ?> 
    <div class="desc"> 
    <span class="discount">Скидка <?= $q->discount ?>%</span> 
    <span class="desc"><?= $desc ?></span> 
    </div> 
    <div class="item_pic"> 
    <? $attr = array('src' => $q->image, 
    'id' => 'item_pic', 
    'class' => 'item_pic') ?> 
    <?= img($attr) ?> 
    </div> 
    <div class="menu_3"> 
     <ul class="menu_3"> 
      <li class="timer"> 
      <? $attr = array('src' => 'css/img/time.png', 
      'class' => 'time') ?> 
      <?= img($attr) ?> 
      <span id="days_<?= $q->id?>"><?= $d->day ?></span>д. 
      <span id="hours_<?= $q->id?>"><?= $d->hour ?></span> : 
      <span id="minutes_<?= $q->id?>"><?= $d->min ?></span> : 
      <span id="seconds_<?= $q->id?>"><?= $d->sec ?></span> 
      </li> 
      <li class="price"> 
      <?= $q->price ?>с. 
      </li> 
      <li class="buy"> 
      <div class="small"> 
      99 
      </div> 
      <a href="<?= base_url() ?>buy/<?= $q->id ?>"> 
      <?= img('css/img/kupit.png') ?> 
      </li> 
      <li class="item_arrow"> 
      <?= img('css/img/item_arrow.png') ?> 
      <? if($i % 2 == 0): ?> 
       <ul class="submenu2"> 
       <? else: ?> 
       <ul class="submenu2"> 
      <? endif; ?> 
        <li> 
        <a href="<?= base_url() ?>show/<?= $q->id ?>"> 
        Подробнее 
        </a> 
        </li> 
        <li> 
        <a href="<?= base_url() ?>how" style="color: #fef102;">Как это работает</a> 
        </li> 
        <li style="border-bottom: none;"> 
        <a href="">Рассказать друзьям</a> 
        </li> 
        <li style="border-bottom: none;"> 
        <a href=""><?= img('css/img/namba.png') ?></a> 
        <a href=""><?= img('css/img/mail_ru.png') ?></a> 
        <a href=""><?= img('css/img/odnoklassniki.png') ?></a> 
        <a href=""><?= img('css/img/vkontakte.png') ?></a> 
        <a href=""><?= img('css/img/facebook.png') ?></a> 
        </li> 
       </ul> 
      </li> 
     </ul> 
    </div> 
    </div> 
<? $i++; ?> 
<? endforeach; ?> 
    <div class="clear"></div> 

我不知道如何通过AJAX把记录单独gradualy当用户向下滚动

回答

1

尝试改写这两条线

$data['query'] = $this->db->query("SELECT * FROM items ORDER BY id DESC"); 
$data['content'] = $this->load->view('item', $data, true); 

$db_data['query'] = $this->db->query("SELECT * FROM items ORDER BY id DESC"); 
$data['content'] = $this->load->view('item', $db_data, true); 

正因为如此,你作为JSON输出的一部分,发送来自DB的查询响应(在$ data数组中)。然后用

echo json_encode($data); 
+0

非常感谢你FOT这个问题的答案替换最后两行! – 2012-02-21 13:41:01

+0

请考虑upvoting的答案,如果它是有用的:) – 2012-02-21 13:42:13

+0

我的名誉不允许我现在投票 – 2012-02-21 14:30:23