Obsah
Ajax s Prototype
Řešení ajaxu pro Nette pomocí js knihovny Prototype.
| Verze | 0.9 |
| Download | prototype.nette.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.responseJSON místo transport.responseText.evalJSON(true), pokud by Nette vracelo content-type application/json (vrací application/x-javascript).
Historie
Připojené soubory
- prototype.nette.js 808 B



