Fork me on GitHub

Processing Jaxon requests


No matter how many classes are exported to javascript, an application using the Jaxon library needs only one entry point to process all the request to these classes. Quelque soit le nombre de classes PHP qu'elle exporte vers javascript, une application qui utilise la librairie Jaxon a besoin d'un seul point d'entrée pour toutes les requêtes vers ces classes.

This is the simplest code to process a request to a Jaxon class:

$jaxon = jaxon();
$jaxon->register(Jaxon::CALLABLE_CLASS, HelloWorld::class);

if($jaxon->canProcessRequest())
{
    $jaxon->processRequest();
}

The processRequest() method calls the function or the class targeted by the request, and sends the returned response back to the client.

A more detailed example

In the following example, the code will be separated in multiple files, in order to have a more realistic example of Jaxon usage.

1. The class declaration

This file contains a class to be called with Jaxon. There can be many files like this one in the application.

// File HelloWorld.php

use Jaxon\Response\Response;

class HelloWorld
{
    public function sayHello($isCaps)
    {
        $text = ($isCaps) ? 'HELLO WORLD!' : 'Hello World!';
        $response = new Response();
        $response->alert($text);
        return $response;
    }
}
2. The library initialization

This file defines the configuration options of the library.

// File setup.php

$jaxon = jaxon();

$jaxon->setOption('core.request.uri', 'ajax.php');

$jaxon->register(Jaxon::CALLABLE_CLASS, HelloWorld::class, ['include' => __DIR__ . '/HelloWorld.php']);

The HelloWorld class will be found thanks to the third parameter of the call. This parameter is optional, and not required when there is another mean to find the class, with autoloading for example.

3. Generating javascript code

The javascript and CSS codes generated by Jaxon must be inserted into the HTML code of the page to be rendered in the browser.

Recall that they are returned by the following calls.

$jaxon = jaxon();

$jaxonCss = $jaxon->getCss();
$jaxonJs = $jaxon->getJs();
$jaxonScript = $jaxon->getScript();

They can then be inserted in the HTML code of the page, like in the following example.

<!doctype html>
<html>
<head>
    <title>Jaxon Simple Test</title>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">
    <link rel="icon" href="/favicon.ico">

<?php echo $jaxonCss ?>

</head>
<body>
    <input type="button" value="Submit" onclick="JaxonHelloWorld.sayHello(1);return false;" />
</body>

<?php echo $jaxonJs ?>

<?php echo $jaxonScript ?>

</html>
4. Processing Jaxon requests

This file processes Jaxon requests.

<?php
// File ajax.php

require __DIR__ . '/setup.php';

$jaxon = jaxon();

if($jaxon->canProcessRequest())
{
    $jaxon->processRequest();
}