Viablog | TI e desenvolvimento de Software

CAT | JQuery

J谩 viram o post anterior sobre Ajax e JQuery? N茫o deixem de ler, nele apresentamos um problema causado pelo assincronismo do Ajax e uma forma simples, por茅m n茫o ideal, de resolv锚-lo.

Para o problema proposto no outro post existe uma forma de realizar a execu莽茫o ass铆ncrona, sem utilizar .defered e mesmo assim estabelecer que uma execu莽茫o s贸 ir谩 ocorrer ap贸s a outra, isso se deve a um recurso antigo da programa莽茫o e que nem todo programador domina: a recursividade.

Veja o exemplo anterior, s贸 que modificado:

function execExclu(executou){
 
 jQuery.each(mapArray, function(i){
 
  if(executou == i){
   executou ++;
   jQuery.ajax(/meuScript.php)
    .done(function() { alert(鈥淓xecutou com sucesso!); execExclu(executou); })
    .fail(function() { alert("Erro no processo!"); });
 
   return false;
  }
 });
}

O exemplo e autoexplicativo, foi criada uma fun莽茫o recursiva que ao ser chamada faz o primeiro step no la莽o de repeti莽茫o, aciona o execu莽茫o Ajax do JQuery e imediatamente retorna falso finalizando a execu莽茫o do la莽o, o pulo do gato est谩 no detalhe que por se ass铆ncrono a execu莽茫o Ajax continua o seu processo e ao finalizar com sucesso ele chama novamente a pr贸pria fun莽茫o (recursividade).

Nesta fun莽茫o existe uma vari谩vel que 茅 o indexador anterior que comparado com o indexar da atual repeti莽茫o ir谩 indicar em qual step do la莽o de repeti莽茫o a chamada Ajax deve ser acionada.

Nesta t茅cnica aproveitamos o recurso chamado callback que o JQuery implementa de forma maravilhosa, nos callbacks conseguimos executar a莽玫es espec铆ficas no final da execu莽茫o, assim podemos ter diversos tipos de processo para cada tipo de callback retornado (sucesso, erro, etc).

Para refinar ainda mais, podemos aproveitar o .ajaxStart() e .ajaxStop() para implementar overlay para indicar de forma visual e bem elegante ao usu谩rio que existe uma execu莽茫o em andamento e que ele dever谩 ter paci锚ncia at茅 o final da execu莽茫o.

Leia mais:

· ·

JQuery adicionou uma nova vis茫o sobre o desenvolvimento de interfaces ricas para sites e sistemas Web, afinal, n茫o era mais preciso programar dezenas de linhas em Ajax, poder铆amos consumir Ajax de forma simples utilizando as fun莽玫es da JQuery.

Como todos sabem, por excel锚ncia as chamadas de Ajax no JQuery s茫o ass铆ncronas, e quando voc锚 est谩 dentro de um la莽o de repeti莽茫o e aciona uma URL que ir谩 processar algo para o seu sistema em backend, por茅m esta execu莽茫o 茅 lenta e ir chamando via Ajax tem a particularidade de ir executando o la莽o de repeti莽茫o at茅 a sua finaliza莽茫o e mesmo que a execu莽茫o do Ajax n茫o tiver sido finalizada uma nova requisi莽茫o 茅 feita.

A principio isto n茫o 茅 ruim, por茅m, em determinados casos 茅 poss铆vel que uma execu莽茫o interfera sobre a outra devido ao fato de que podem manipular a mesma rotina interna, como acertar isto ent茫o?

Embora desde a vers茫o 1.5 o JQuery implemente .deferred nas chamadas Ajax 茅 poss铆vel que a altera莽茫o da sua rotina para um controle de .deferred se torne muito 谩rduo, por isso existem solu莽玫es mais simples e que podem servir a um grande leque de situa莽玫es, a solu莽茫o mais simples para o processo acima 茅 deixar a execu莽茫o do Ajax via JQuery de forma s铆ncrona, assim, uma repeti莽茫o do la莽o s贸 ocorre quando a requisi莽茫o Ajax terminar, criando assim um fila 煤nica do processo.

Veja um exemplo:

jQuery.ajax({
 url:/meuScript.php, //Aqui vai a URL ou script a ser acionado
 async: false, //Aqui voc锚 define a execu莽茫o como s铆ncrona
 jsonp: false, //Controle do fluxo de retorno
 complete: function( /*coloque aqui sua instru莽茫o ao finalizar com sucesso a sua requisi莽茫o*/){ }
});

Viu, muito simples, como tudo em JQuery, embora extremamente simples de se implementada a t茅cnica acima tem um grave problema, por ser uma execu莽茫o s铆ncrona, o browser ficar谩 congelado, o que n茫o 茅 nada elegante, aguardando o retorno da execu莽茫o e caso outros scripts precisem se acionados eles ter茫o que esperar a execu莽茫o da chamada s铆ncrona, n茫o haver谩 modo de executa-los paralelamente.

Como resolver ent茫o?

脡 simples tamb茅m, n茫o deixem de acompanhar a solu莽茫o ass铆ncrona para o problema proposto.

Leia mais:

· ·

Algumas vezes temos de inserir fun莽玫es JavaScript nos tr锚s eventos de mouse (onMouseOver, onMouseOut e onMouseMove) no mesmo elemento HTML.

Nem 茅 precisa falar que s茫o constantes os problemas de conflitos e quase sempre sofremos para equacionar nossas fun莽玫es JavaScript para trabalharem atuando no mesmo elemento, em tr锚s eventos distintos do mouse sem bloquear ou atrapalhar as execu莽玫es uma das outras. Isso sem falar que muitas vezes temos problemas no JavaScript onde um browser executa o outro n茫o ou ainda temos um comportamento alterado.

Como resolver? Simples, utilizando JQuery.

Podemos equacionar o acionamento dos tr锚s eventos de mouse de forma simples e o c贸digo JavaScript embutido dentro de cada chamada ir谩 ser executado sem conflitar (茅 claro que se a execu莽茫o de um atuar sobre o mesmo elemento e da mesma forma a execu莽茫o mais recente ir谩 sobrescrever a execu莽茫o mais antiga). Como fica um exemplo de c贸digo:

var campoMeu = document.getElementById("campoMeu ");
 
$( campoMeu).mouseover(function(){
  //Seu c贸digo de execu莽茫o aqui
 }).mousemove(function(e){
  //Seu c贸digo de execu莽茫o aqui
 });
}).mouseout(function(){
 //Seu c贸digo de execu莽茫o aqui
});

Viram como fica simples, basta buscar o elemento pelo seu ID e depois atribuir os eventos de mouse utilizando o JQuery.

Leia mais:

· ·


Durante o ano de 2010 esteve um planejamento e execu莽茫o o projeto de um Framework para desenvolvimento Web utilizando PHP e JavaScript baseado nas seguintes premissas e necessidades:

  • Deixar o layout livre para qualquer tipo de desenvolvimento (seja utilizando Tableless ou n茫o);
  • N茫o ser t茫o friendly-user como o WordPress, nosso usu谩rio ir谩 desenvolver c贸digo e n茫o arrastar elementos em tela. Centrar-se no poder do desenvolvimento de c贸digo, deixar o desenvolvedor, nosso p煤blico-alvo, fazer a sua m谩gica em PHP;
  • Centrar-se no uso da JQuery como framework JavaScript para suprir todas as necessidades de crossbrowser;
  • Ser livre para o desenvolvedor alterar o c贸digo-fonte do projeto e sugerir novos recursos;
  • Padronizar e formatar a persist锚ncia de dados;
  • Permitir que programadores e desenvolvedores iniciantes em PHP produzam sites e sistemas Web complexos;
  • Facilitar a manuten莽茫o e gest茫o do sistema;
  • 脕rea administrava pronta, com elementos principais utilizados para gest茫o de sites.

Bem pessoal, est谩 apresentado o framework iMais, que pelos testes permite reduzir em at茅 60% do tempo gasto no desenvolvimento de sites e sistemas Web.

Com o c贸digo-fonte aberto e livre 茅 poss铆vel utilizar o framework com os recursos existentes e expandi-lo atrav茅s de desenvolvimento pr贸prio, de forma f谩cil e flex铆vel. Mesmo utilizando o framework n茫o existe a perda de performance, problema comumente encontra em frameworks de mercado.

Nos pr贸ximos dias estaremos liberando para download o conjunto b谩sico, o que significa que no decorrer deste ano iremos investir tempo e recurso para que o framework cres莽a em termos de utilizadores e recursos, facilitando a cria莽茫o de elementos Web ricos.

Vai desenvolver em PHP? Ent茫o utilize o iMais.

Leia mais:

· · · ·


Imagine a seguinte necessidade, voc锚 tem um formul谩rio HTML, e conforme o usu谩rio vai preenchendo os dados 茅 preciso alterar os dados dos campos seguintes desse mesmo formul谩rio.

Essa tarefa pode ser realizada, utilizando somente PHP, por茅m ser谩 necess谩rio alguns reloads no formul谩rio que pode irritar algum usu谩rio mais exigente e ainda teremos que criar uma s茅rie de controles para isso.

Qual a solu莽茫o ent茫o?

Podemos utilizar JQuery para isso.

Como vimos nas m谩scaras utilizar JQuery al茅m de simples pode deixar sua aplica莽茫o Web muito mais elegante e funcional, vamos ao exemplo.

Supondo que eu queira retornar o campo rua (que cont茅m o nome da rua) ap贸s consultar o CEP informado pelo usu谩rio. Come莽aremos pelo script HTML que gera o formul谩rio Web. Vamos criar um div e colocar em seu id a string “retorno”.

<input type="text" name="cep" id="cep" value="<?php echo $cep; ?>" size="10" maxlength="10"/>
<input type="button" name="cCep" id="cCep"聽 value="Procurar" onclick="javascript:return chCEP(2, document.novoCliente.cep)"/>
 
<div id="retorno"></div>

No exemplo acima podemos observar que o bot茫o “Procurar” dispara uma fun莽茫o JavaScript, o conte煤do dessa fun莽茫o 茅 o seguinte:

function chPage(acao, campo){
 jQuery(function($){
  $("#retorno").load("buscaCep.php", {acao: acao, cep: campo.value} );
 });
}

Viram o pulo do gato nessa fun莽茫o?

Ela dispara o script PHP buscaCep.php passando duas vari谩veis via POST, a primeira 茅 a vari谩vel acao e a outra cep.

Essas duas vari谩veis servem para que o script PHP execute uma consulta a um banco de dados qualquer e retorne HTML puro, ou seja, o seu retorno seria:

<input name="rua" id="rua" value="Rua pesquisada" />

E essa parte da fun莽茫o JavaScript - $(“#retorno”) - serve para indicar em qual objeto do formul谩rio o HTML de retorno ser谩 inserido.

Viram que interessante, de uma p谩gina HTML que 茅 na verdade um formul谩rio HTML eu chamo e executo um script PHP e consigo inserir em tempo de execu莽茫o o HTML retornado do script PHP sem a necessidade de reload em todo o formul谩rio.

Leia mais:

·


Continuando a falar das facilidades de desenvolvimento trazidas com a JQuery, vou explicar como fazer de forma simplificada como fazer m谩scaras utilizando a JQuery.聽Observem聽o c贸digo abaixo:

jQuery.noConflict();
jQuery(function($){
	$("#cnpj").mask("99.999.999/9999-99");
	$("#cep").mask("99.999-999");
});

Perceberam a facilidade?

Funciona da seguinte forma:

A primeira linha tem a fun莽茫o de evitar conflitos com outros scripts JQuery ou JavaScript puro que voc锚 possa ter na sua p谩gina.

A segunda linha iniciamos a fun莽茫o na sintaxe do JQuery.

A terceira linha temos o ID do nosso elemento HTML que ir谩 receber a mascara (no caso 茅 um text) e em seguida definimos a m谩scara, sem nenhum segredo, sem c贸digos miraculosos.

Sem mais nada.

Simples e funcional em todos os browsers modernos.

Leia mais:

·

Conhecendo a JQuery


Eu n茫o sou muito f茫 de frameworks, at茅 porque um framework pode engessar de forma desnecess谩ria a sua aplica莽茫o e voc锚 fica dependente da ferramenta para prestar manuten莽茫o e/ou atualizar sua aplica莽茫o, por茅m em alguns casos temos que tirar o chap茅u para um framework.

脡 o caso do JQuery, que 茅 um framework para JavaScript que tem por finalidade diminuir a complexidade de desenvolvimento de software web e minimizar a incompatibilidade do c贸digo JavaScript entre navegadores, al茅m de possuir a possibilidade de implementa莽茫o segura de efeitos e CSS via ado莽茫o de plugins.

Com o JQuery podemos abranger m谩scaras, valida莽玫es complexas em formul谩rios at茅 mesmo efeitos de transi莽茫o entre p谩ginas, tudo isso sem a grande preocupa莽茫o de desenvolvedores JavaScript que 茅 a compatibilidade do c贸digo-fonte entre os diversos navegadores dispon铆veis no mercado.

A sua instala莽茫o 茅 simples, podemos fazer o download da vers茫o de produ莽茫o do pr贸prio site do JQuery e depois para utilizar ele em uma p谩gina basta utilizar a seguinte linha na tag HTML header:

<script src="Scripts/jquery-1.4.2.min.js" type="text/javascript"></script>

Leia mais:

· · · ·

Arquivos

Theme Design by devolux.nh2.me