EN | CS | Přihlásit | Registrovat

Ajax s Prototype

Řešení ajaxu pro Nette pomocí js knihovny Prototype.

Verze 0.9
Download prototype.net­te.js
Forum thread http://forum.nette.org/…-a-prototype
Autor Martin Hořínek
Licence MIT

Instalace

Stáhněte soubor prototype.nette.js a nalinkujte ho do stránky.

/**
* AJAX Nette Framwork plugin for Prototype
*
* @copyright Copyright (c) 2009 Martin Hořínek | Hever
* @license MIT
* @link http://addons.nette.org/cs/prototype-ajax
* @version 0.1
*/


var Nette = {
callback:
function(payload) {
// redirect
if (payload.redirect) {
window.location.href = payload.redirect;
}

// snippets
for (var id in payload.snippets) {
$(id).update(payload.snippets[id]);
}
}
};

Ajax.Responders.register({
onComplete:
function(settings, transport) {
if(transport.status == 200)
Nette.callback(transport.responseText.evalJSON(
true));
}
});

document.observe('click', function(e, el) {
if (el = e.findElement('a.ajax')) {
e.stop();
new Ajax.Request(el.href);
}
});

Příklad použití

Inspirováno Ajax s jQuery

Následující kód odchytává kliknutí myší na celé stránce a pokud je click provedený nad odkazem s třídou ajax, zavolá ajaxový požadavek.

document.observe('click', function(e, el) {
if (el = e.findElement('a.ajax')) {
e.stop();
new Ajax.Request(el.href});
}
});

Tento kód nastaví po úspěšném provedení každého ajaxového požadavku volání funkce Nette.callback(). Té předáváme příchozí JSON data.

Ajax.Responders.register({
onComplete:
function(settings, transport) {
if(transport.status == 200)
Nette.callback(transport.responseText.evalJSON(
true));
}
});

Pozn. šlo by použít transport.res­ponseJSON místo transport.res­ponseText.eval­JSON(true), pokud by Nette vracelo content-type application/json (vrací application/x-javascript).

Historie

Připojené soubory


Login to submit a comment