Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Nukes

Jquery UI Tabs e Recebimento de Variável

Recommended Posts

Bom dia galera...

 

Eu estou usando Jquery para fazer um site aqui, porém sou bem iniciante na coisa e estou precisando de uma ajuda...

 

O problema é o seguinte, estou usando o plugin UI Tabs do Jquery para fazer um menu... Nesse menu, tem 4 tabs: "Inicio", "Criar Projeto", "Ver Projetos" e "Cadastro"... Antes de o usuário efetuar o login, somente as abas "Inicio" e "Cadastro" ficam ativas, as outras 2 ficam inativas.

 

O que acontece é que mesmo depois de o usuário efetuar o login, não consigo deixar as abas "Ver Projetos" e "Criar Projetos" ativa... Segue uma imagem para ilustrar:

 

errof.th.jpg

 

O código do form:

 

        <table border="0" style="text-align: center;" align="center">
         <tr>
           <td width="21%">Usuário:</td>
           <td width="79%"><input type="text" name="txt_user" id="txt_user" /></td>
         </tr>
         <tr>
           <td>Senha:</td>
           <td><input type="password" name="txt_pass" id="txt_pass" /></td>
         </tr>
         <tr>
           <td colspan="2"><input type="submit" name="but_login" id="but_login" value="Login" /></td>
         </tr>
       </table>

 

login.php:

 

<?php
include_once ("includes/functions.php");
include_once ("includes/connect.php");


// Recebe as variáveis
if (isset($_POST['user']) and ($_POST['user'] != "undefined") and ($_POST['user'] != "")) { $user = anti_injection($_POST['user']); } else { $erros['user'] = "Digite seu nome de usuário\\n"; }

if (isset($_POST['pass']) and ($_POST['pass'] != "undefined") and ($_POST['pass'] != "")) { $pass = anti_injection($_POST['pass']); } else { $erros['pass'] = "Digite sua senha"; }

// Verifica se as duas foram recebidas e então faz o select
if (isset($user) and isset($pass)) 
{
$sql = ("SELECT * FROM gc_users WHERE user = '$user' and pass = '$pass';");
$query = mysql_query($sql);

// Verifica se localizou algum registro se sim, inicia sessão, senão coloca mensagem de erro.

if (mysql_num_rows($query) == 1) 
{
	while ($result = mysql_fetch_array($query)) {
		session_start();
		$_SESSION['id_user'] = $result['id_user'];
		$_SESSION['session_id'] = rand(1, 800000000);
		$_SESSION['user'] = $result['user'];
		$_SESSION['nome'] = $result['nome'];
		$_SESSION['email'] = $result['email'];
		$_SESSION['setor'] = $result['setor'];
	}
}

else 
{ 
$erros['cadastro'] = "Usuário ou senha informados estão incorretos."; 
}
}

if (mysql_num_rows($query) != 1) {
echo 1;	
}

?>

 

login_jquery.js:

 

$(function(){
$("#but_login").click(function(){
$("#form_login").hide("slow");
beforeSend:$("#carregando_form").show("5000");
var user = $("#txt_user").val();
var pass = $("#txt_pass").val();
$.post("login.php", { user:user, pass:pass }, function(login) {
complete:$("#carregando_form").hide("slow");

// Soh o exemplo do fim do código, depois daqui já tentei de toda forma...

if (login == 1) {
$('#retorno').show("slow").html('Teste - Login Ok');	
// Já tentei assim:
$('#nav > ul').tabs({ disabled: [] });
// Já tentei assim:
$('#nav > ul').tabs("enable");
// Já tentei assim: 
$('#nav > ul').tabs("enabletabs");

// Já tentei de tudo que é forma e não ativa essas abas...
}

else {
$('#retorno').show("slow").html('Teste - Login Negado');
}


});
});
});

 

Eu acho que não estou conseguindo validar o que volta do Login.php, não sei, na verdade já tentei de tanta forma que minha cabeça não pensa mais... Sabem como é =x

 

Qualquer ajuda é bem vinda!

 

Obrigado desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

deixa assim:

 

$.post("login.php", { user:user, pass:pass }, function(login) {

   alert( login+' type '+typeof( login ) );

   if (login == '1'){
       $("#carregando_form").hide("slow");

informe oq voltar desse alert

 

 

 

agora pergunta: como você desativa as abas ? onde ?

mostre o script em que você cria elas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi William, fiz o que você falou e retornou o seguinte:

 

"1

type string"

 

... Estranho não? Tem algo a ver com estar retornando string? Pq já tentei fazer "if (login == '1')" com aspas e também não funcionou :S...

 

O código que desativa as abas é o seguinte:

<script type="text/javascript">

           $(function() {
	$('#nav > ul').tabs({ disabled: [2, 3] });
               $('#nav > ul').tabs({ fxSlide: true, fxFade: true, fxSpeed: 'normal' });
           });

</script>

 

Tá dentro do "<head>" no index.php

 

Obrigado pela ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

... Estranho não?

não. Normal, ajax sempre vai retornar string.

.responseText lembra ? hehe

 

Oq você estava confiando, era q o parser iria fazer cast do tipo.

 

 

O código que desativa as abas é o seguinte:

$('#nav > ul').tabs({ disabled: [2, 3] });

um chute grosseiro meu, seria esse aqui:

if (login == '1') {
   alert( 'entrou no if' );//informe se aparece esse alert
   $('#nav > ul').tabs('enable');
}

 

 

você ta usando o UI ne?!

http://jqueryui.com/demos/tabs/#method-enable

 

tb não achei nada muito diferente das suas tentativas. Se não der certo, poste um link para o site, para eu debugar online.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não manjo nada de jquery nem js, comecei anti ontem... Nem sabia que era responseText...hehehe

 

Mas então William, ele sempre entra no Else, ou seja, nunca valida o "login = '1'" mesmo que login realmente seja 1 type string como a gente viu.

 

E outro problema das Tabs, mesmo que eu coloque o código dentro do else, ainda assim ele não ativa as tabs...

 

Nesse caso ele mostra o Alert "Entrou no Else"... Mostra o #Form_login... Mostra dentro do "span class="erro"" o texto retornado (no caso '1') e ainda assim não ativa as abas >_< ...

 

Vou postar online aki e já te passo o link...

 

else {
alert( 'entrou no else' );//informe se aparece esse alert
$('#form_login').show("slow");
$('#form_login > .erro').text(login)
$('#nav > ul').tabs({enable: [2, 3]});
}

 

Pelo que parece o erro está na validação do valor retornado e no código de "enable" das abas...

 

>_<

Compartilhar este post


Link para o post
Compartilhar em outros sites

vamos trocar então:

if (mysql_num_rows($query) != 1) {
echo 1; 
}

 

você retorna o 1 caso seja diferente de 1 as linhas da consulta. Então, isso é um "false"

 

faça:

if (mysql_num_rows($query) != 1) {
echo 'falha'; 
}

e no lado do js, teste a string falha

 

 

aguardando online para eu debugar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

William, fiz o seguinte:

 

No login.php ficou assim:

 

if (mysql_num_rows($query) != 1) {
echo 'falha'; 
}

else {
echo 'teste ok';
}

 

e no jquery ficou assim:

 

if (login == 'falha') {
alert( 'entrou no if' );//informe se aparece esse alert
$('#retorno').show("slow").text(login);
}

else {
alert( 'entrou no else' );//informe se aparece esse alert
$('#form_login').show("slow");
$('#form_login > .erro').text(login);
$('#nav > ul').tabs("option","disabled",[]);
}

 

O link para você debugar online é:

 

http://www.amorc.org.br/Desenvolvimento/pgcon

 

Se quiser me add no MSN pra ficar mais fácil: murilonkz@hotmail.com

 

Brigadão!

 

Ah, o usuário e a senha para testes é:

 

User: teste

senha: teste

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara.. hauhauhau

tá tudo certinho.. para habilitar, só consigo pensar nisso aqui:

 

else {
  alert( 'entrou no else' );//informe se aparece esse alert
  $('#form_login').show("slow");
  $('#form_login > .erro').text(login);

  $('.ui-tabs-disabled').removeClass('ui-tabs-disabled');
}

 

:lol:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.