Jump to content
Sign in to follow this  
QuickFire

[PHP] Sajax

Recommended Posts

QuickFire

Depois de alguma pesquisa sobre AJAX na web encontrei um framework que facilita a vida de qualquer webmaster. Chama-se Sajax.

Este framework dá para trabalhar em inúmeras aplicações entre elas: PHP, ASP, Cold Fusion, Pytho, Perl, entre outros... Para mais informações sobre Sajax vão ao site http://www.modernmethod.com/sajax/

Bem começemos agora a parte 1 do nosso pequeno tutorial.

Vai consistir basicamente em criar uma calculadora para multiplicar. Espantoso dizem vocês. Mas com esta calculadora vão puder fazer tudo e mais alguma coisa se tiverem imaginação.

Então para isto precisamos do ficheiro 'Sajax.php' que facilmente encontram no site acima e aqui vai o código devidamente comentado:

<?php
// Incluir o Sajax
require("Sajax.php");

// Criar uma função que vai ser utilizada pelo Sajax (podem também incluir um ficheiro com várias funções sem ter de a criar agora)

function multiply($x, $y) { 
//Função que vamos usar para multiplicar
    return $x * $y;
}

// Instancia à classe do AJAX
sajax_init();

// Este é o debug mode, quando ligado (1) ele diz-nos todas as informações e mais algumas, é porreiro quando estamos a desenvolver, quando acabar o desenvolvimento desligam(0)
$sajax_debug_mode = 1;

// Declara a função que vai ser utilizada pelo Sajax (neste caso é a função que temos em cima)

sajax_export("multiply");

// Declaração obrigatória
sajax_handle_client_request();
?>
<html>
<head>
<title>Calculadora de multiplicar</title>
<script>
<?php
// Declaração obrigatória, serve para criar os códigos necessários de javascript
sajax_show_javascript();
?>

// Para cada função criada no PHP é preciso fazer 2 funções no Javascript, sendo que a primeira trata os dados vindos do utilizador, e a segunda trata os dados returnados pelo PHP

function do_multiply()
{
    var x, y;
    
    x = document.getElementById("x").value;
    y = document.getElementById("y").value;
    
    // Função responsavel por enviar os dados ao PHP, esta tem de ter o prefixo de 'x_' (sem plicas), logo como a nossa função se chama 'multiply', esta vai ficar 'x_multiply'

    x_multiply(x, y, do_multiply_cb);
}

// Função responsavel por intrepretar os dados vindos do PHP, neste caso dá o valor returnado ao text input z

function do_multiply_cb(z)
{
    // Atribui o valor do retorno do PHP ao campo de id chamado z
    document.getElementById("z").value = z;
}
</script>
<!-- Analytics -->
<script type="text/javascript">
 var _gaq = _gaq || [];
 _gaq.push(['_setAccount', 'UA-31683991-1']);
 _gaq.push(['_setDomainName', 'portugal-a-programar.pt']);
 _gaq.push(['_trackPageview']);
 (function() {
   var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
   ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
   var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
 })();
</script>
<!-- /Analytics --><!-- Analytics -->
<script type="text/javascript">
 var _gaq = _gaq || [];
 _gaq.push(['_setAccount', 'UA-31683991-1']);
 _gaq.push(['_setDomainName', 'portugal-a-programar.pt']);
 _gaq.push(['_trackPageview']);
 (function() {
   var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
   ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
   var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
 })();
</script>
<!-- /Analytics --><!-- Analytics -->
<script type="text/javascript">
 var _gaq = _gaq || [];
 _gaq.push(['_setAccount', 'UA-31683991-1']);
 _gaq.push(['_setDomainName', 'portugal-a-programar.pt']);
 _gaq.push(['_trackPageview']);
 (function() {
   var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
   ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
   var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
 })();
</script>
<!-- /Analytics --></head>

<body>
<input type="text" name="x" id="x" value="2" size="3">
*
<input type="text" name="y" id="y" value="3" size="3">
=
<input type="text" name="z" id="z" value="" size="3">
<input type="button" name="check" value="Calculate"
onclick="do_multiply(); return false;">
</body>
</html> 

E pronto, básicamente é só isto. Vão 'brincando' com o código e vão ver resultados surpreendentes.

Cumprimentos

Share this post


Link to post
Share on other sites
Dabubble

Um parece ser uma framework muito interessante... sera que tb ha para JSP/Struts ? e que ainda nao e simples nem escalavel programar Ajax lah.. (pelo menos que eu saiba)

Share this post


Link to post
Share on other sites
QuickFire

Eu não vejo nenhuma referência a JSP no site, nem nos ficheiros do Sajax por isso suponho que não dê :|

Share this post


Link to post
Share on other sites
djthyrax

Um parece ser uma framework muito interessante... sera que tb ha para JSP/Struts ? e que ainda nao e simples nem escalavel programar Ajax lah.. (pelo menos que eu saiba)

https://ajax4jsf.dev.java.net/nonav/ajax/ajax-jsf/

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Share this post


Link to post
Share on other sites
jreis

!!

Parece-me mais complicado de trabalhar do que o método "normal", sem framework nenhum... Alguém me explica isso melhor..?


"Pensa positivo: tudo pode piorar"

Share this post


Link to post
Share on other sites
DRKaQUiLa

Sinceramente prefiro o método standart (XMLHTTP), é muito simples de usar.

Uma pergunta, com esta framework os caracteres, do ç é, não vêm marados??

Cumps.

Share this post


Link to post
Share on other sites
QuickFire

Sinceramente prefiro o método standart (XMLHTTP), é muito simples de usar.

Uma pergunta, com esta framework os caracteres, do ç é, não vêm marados??

Cumps.

Vêm sim :) O que fiz foi passar as vars com um encode, na altura resultou ;)

Share this post


Link to post
Share on other sites
jreis

Se estás a tentar passar strings com esses caracteres para javascript, o output tem de estar em UTF-8, salvo erro. Penso que um utf8_encode() chega, mas por via das dúvidas convem enviar um header com o encoding correcto. Digo eu.


"Pensa positivo: tudo pode piorar"

Share this post


Link to post
Share on other sites
DRKaQUiLa

Sim. Foi esse o método que arranjei para que os caracteres não viessem marados. utf8_encode() no php (por exemplo), e quando recebo no javascript, faço o URIDecode()  :cheesygrin:

Cumps pessoal.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.