Jump to content

[PHP] Sajax


QuickFire
 Share

Recommended Posts

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

Link to comment
Share on other sites

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)

Link to comment
Share on other sites

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 😉

Link to comment
Share on other sites

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"

Link to comment
Share on other sites

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()  😁

Cumps pessoal.

Link to comment
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
 Share

×
×
  • 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.