Arquivo para a JavaScript categoria

JSON ou XML, o que retornar para o AJAX?

Postado em Ajax, JavaScript em 23 23UTC Outubro 23UTC 2009 por alexandrems

Para a conclusão da minha pós-graduação, fiz um artigo para comparar as formas de retorno mais utilizadas para aplicações em AJAX, neste post vou resumir a idéia e mostrar minha conclusão, se quiser pode clicar aqui e baixar o artigo completo.

O conceito do AJAX é simples, enviar requisições assíncronas para um servidor que irá processa-las e retornara algum tipo de dados que serão tratados pelo JavaScript na máquina do cliente. Mas e  qual é o melhor formato desses dados que o servidor irá retornar para o cliente?

Bom básicamente ele retorna texto (string) através do protocolo HTTP, sendo possível identificar qual pelo cabeçalho um tipo específico desses dados, como por exemplo, o XML. Se não for especificado ele traz um texto normal. Não vou entrar em detalhes como é feito isso, você ja deve ter trabalhado com AJAX para poder entender o que segue neste post.

XML é muito conhecido e utilizado por inumeras aplicações, com ele é possível organizar com facilidade uma estrutura de dados para serem transmitidos pelo servidor ao cliente. JSON é uma notação de um Objeto JavaScript, mas pode ser utilizado em várias linguagens. Utilizando a função eval() o JavaScript transforma essa string JSON em um objeto para poder ser manipulado.

Tanto XML como JSON podem ser escritos manualmente na forma de uma string, mas existem classes e API´s para várias linguagens que facilitam a manipulação dessas tecnologias. Abaixo vai um exemplo de organização de dados em XML e JSON.

<?xml version="1.0" encoding="iso-8859-1"?>
 <nome> Alexandre </nome>
 </idade> 27 </idade>
</xml>

Exemplo de código XML.

({"nome":"Alexandre"},{"idade":"27"})

Exemplo equivalente para código JSON.

A manipulação do XML necessita utilizar padrões DOM, isso de certa forma dificulta a escrita do código em relação a manipulação com JSON, onde na maioria dos casos basta passar um Objeto ou Vetor com os dados que a classe ou API transforma automáticamente em uma String JSON. A mesma idéia se aplica na parte do cliente, onde o Javascript precisa utilizar o DOM para manipular o retorno em XML. O exemplo disso em JavaScript segue abaixo.

// Para retornar o primeiro nome "Alexandre" vindo de um XML
var nodo = http_request.responseXML;
nodo[0].getElementsByTagName('nome')[0].childNodes[0].nodeValue;

// Para retornar o primeiro nome "Alexandre" vindo de um objeto JSON
var json = eval("("+http_request.responseText+")");
json[0].nome;

Em relação a performance, tamanho e velocidade, tanto XML quanto JSON estão no mesmo nível, ou seja para o cliente é indeferente se a aplicação retorna XML ou JSON. Já para o desenvolvedor é nitida a diferença entre trabalhar com XML e JSON, como o XML segue vários padrões específicos desta linguagem é natural a necessidade de uma outra linguagem utilizar um parser(DOM) que possibilita manipulação dos itens e elmentos do XML. Portanto uma tecnologia que não dependa de linguagens externas  para manipular informações que serão transmitidas entre uma linguagem e outra já teria certa vantagem sobre o XML.

Links
http://www.json.org/
http://battisti.wordpress.com/apostilas/

Minutos para Dias em Javascript

Postado em JavaScript em 12 12UTC Maio 12UTC 2009 por alexandrems

Precisei de uma função para transformar um total de minutos em dias / horas / minutos. Ficou bem simples mas bem funcional, ela não retorna os segundo, e o parametro de entrada é em minutos.

function getTempo(tempo){

if(parseInt(tempo) >= 60){
var hra = Math.floor(parseInt(tempo) / 60);
var min = Math.floor(parseInt(tempo) % 60);
var dia = "";
if(hra >= 24){
dia = Math.floor(parseInt(hra) / 24);
hra = Math.floor(parseInt(hra) % 24);
}
min = (min > 0) ? min+" min" : "";
hra = (hra > 0) ? hra+" hrs " : "";
dia = (dia > 0) ? dia+" dias " : "";
tempo = dia + hra + min;
}else{
tempo = tempo + " min";
}
return tempo;

}
Exemplo:
var tempo = getTempo(3460);
document.write(tempo);
/* tempo = 2 dias 9 hrs 40 min */

Codificação nos posts

Postado em Ajax, Geral, JavaScript, PHP com as tags em 15 15UTC Abril 15UTC 2009 por alexandrems

A tempos que estava atraz disso, colocar codificação do php nos posts, recebi um comentário do edipo dizendo como fazer, mas estava um pouquinho errado eheheh. Dai deu uma googlada e achei essa página, Support Code (Bem sujestivo :P ).

Resumindo, soh utilizar o código dentro das tags.

[sourcecode language='php']

Código

[/sourcecode]

Algumas linguagens que ele “estiliza”:

  • cpp
  • csharp
  • css
  • delphi
  • html
  • java
  • jscript
  • php
  • python
  • ruby
  • sql
  • vb
  • xml

Objetos Literais com JavaScript

Postado em JavaScript em 15 15UTC Abril 15UTC 2009 por alexandrems

Objetos Literais são conjuntos de propriedades com um ou mais elementos que contem valores préviamente setados, esses valores podem ser tipos primitivos da linguagem (inteiro, string,  array) ou objetos e variaves.
Resumindo, Objetos Ligerais = JSON.

No exemplo abaixo foi criado o objeto Data com algumas propriedades.

var Data = {
	semana : ['Domingo','Segunda','Terça','Quarta','Quinta','Sexta','Sábado'],
	dia : new Date().getDate(),
	mes : new Date().getMonth()+1,
	ano : new Date().getFullYear(),
	dsemana : new Date().getDay(),
	hora : new Date().getHours(),
	min : new Date().getMinutes(),
	seg : new Date().getSeconds(),
	getDia : function(){
		return this.semana[this.dsemana] +","+ this.dia +"/" +this.mes+"/"+this.ano;
	},
	getHora : function(){
		return this.hora+":"+this.min+":"+this.seg;
	}
}
// Retorna o dia atual
alert(Data.dia);
// Retorna o dia-semana,dia/mes/ano
alert(Data.getDia());
// Retorna Hora:Minuto:Segundo
alert(Data.getHora());