Scroll Infinito (CodeIgniter + Ajax + MySQL)
Boa noite. Estou desenvolvendo uma pequena rede social, e cheguei na parte do scroll infinito por PHP + MySQL + Ajax, a parte da programação, tudo certo, fiz a query corretamente, o PHP tranquilo, mas o meu problema é, quado bate próximo ao fim da página (scroll), eu deveria pegar a página do get e dar um append, tudo certo até aí, o problema entra quando ele dar 2, 3 get e append, e fica tudo bagunçado.
Eu preciso que ele só permita dar outro get, depois que o primeiro for concluído, tentei usar a variável sinal, mas sem sucesso!
Controller (CodeIgniter)
public function usuario_pergunta($usuario = null, $last = null) {
$data['uci'] = $this->m_acao->get( 'usuarios', array('id' => $usuario), true );
$data['perguntas'] = $this->m_usuarios->getTimeLine( $usuario, $last );
$this->load->view('site/usuarios/usuario_perguntas', $data);
}
**Model (Query)**
public function getTimeLine($usuario = null, $last = null) {
if($last) {
$last = 'AND p.id < '.$last;
}
$query = $this->db->query("
SELECT
p.id, p.pergunta, p.criacao, r.resposta, r.criacao as r_criacao, u.nome, u.username, u.oauth_uid, u.foto, u.id as uid
FROM perguntas p
LEFT JOIN usuarios u ON u.id = p.usuarios_id
LEFT JOIN respostas r ON p.id = r.perguntas_id
WHERE
p.usuario_destino = ".$usuario."
AND p.status > 1
".$last."
ORDER BY p.criacao DESC
LIMIT 15");
//echo $this->db->last_query();
if($query->num_rows() > 0) {
$result = $query->result();
return $result;
} else return false;
}
**js_scroll.php**
var win = $(window);
var sinal = 1;
win.scroll(function() {
if ( $(document).height() - win.height() - 150 <= win.scrollTop()) {
if(sinal == 1) {
sinal = 0;
$('.loading').fadeIn(500);
//PERFIL DO USUÁRIO @USER
if( $('.pergunta-user').length > 0 ) {
var last = $('.item-perg').last().data('perg');
$.get('<?= base_url('usuarios/usuario_pergunta/'.$uci->id.'/') ?>' + last, function (dados) {$("#pergunta").append(dados);});
}
$('.loading').fadeOut(500);
sinal = 1;
}
}
});Discussão (0)
Carregando comentários...