Ajax.Responders.register({
onCreate: function() {
new Effect.Appear('ajax_loader', { duration: 0.3, to: 0.5 });
},
onComplete: function(request, transport, json) {
if (0 == Ajax.activeRequestCount) {
new Effect.Fade('ajax_loader', { duration: 0.3, from: 0.5 });
}
if(!request.success()) {
var errorMapping = $H({
400: ['Bad Request', 'The request contains bad syntax or cannot be fulfilled.'],
401: ['Authorization Required', 'You need to authenticate to access this page.'],
403: ['Forbidden', 'The request was a legal request, but the server is refusing to respond to it.'],
404: ['Page Not Found', 'The requested resource could not be found.'],
405: ['Method Not Allowed', 'A request was made of a resource using a request method not supported by that resource; for example, using GET on a form which requires data to be presented via POST, or using PUT on a read-only resource.'],
406: ['Not Acceptable', 'The action you tried to perform on this resource was considered unacceptable.'],
415: ['Unsupported Media Type', 'The media type you are requesting is unsupported.'],
422: ['Unprocessable Entity', 'The request was well-formed but was unable to be followed due to semantic errors.'],
500: ['Application Error', 'An error occurred in the application code. Report sent.'],
503: ['Service not available', 'The webserver did not respond to the request.'],
505: ['HTTP Version Not Supported', 'The requested version is not available on this server.']
});
var errorMessage = errorMapping.get(transport.status) || ['Unknown Error', 'An error occurred, but could not be determined correctly.'];
if (transport.responseJSON && transport.responseJSON.error)
errorMessage = [transport.responseJSON.error.title, transport.responseJSON.error.message]
var notifyUser = new GrowlNotifier({
title: errorMessage[0],
message: errorMessage[1],
image: "/images/elements/growl_warning.png",
type: 'error'
});
}
}
});
amantecayolt, se traduce del nahuatl como ciencias de la tecnología ó tecnología http://www.espanolsinfronteras.com/Diccionarios/EspdeMx-DiccEspanolNahuatl-T.htm
jueves, 25 de febrero de 2010
Mensajes cuando se hace una llamada usando Ajax
miércoles, 16 de abril de 2008
Errores comunes con Prototype
Errores comunes con Prototype
1.
Modo Incorrecto
document.getElementById('foo')
Modo Correcto
$('foo')
El operador $ es lo mas esencial de Prototype, de ahí viene toda su magia, utilizalo!
2.
Modo Incorrecto
var woot = document.getElementById('bar').value
var woot = $('bar').value
Modo Correcto
var woot = $F('bar')
El operador $F es un gran atajo para obtener valores de elementos.
3.
Modo Incorrecto
$('footer').style.height = '100px';
$('footer').style.background = '#ffc';
Modo Correcto
- $('footer').setStyle(
- {
- height: '100px',
- background: '#ffc'
- }
- )
Olvidate de problemas de bugs sobre diferentes navegadores si utilizas el metodo setStyle()
4.
Modo Incorrecto
$('tusuperelemento').innerHTML = 'algun contenido'
Modo Correcto
$('tusuperelemento').update('algun contenido')
Podras decir que es casi la misma, pero no opinaras lo mismo cuando necesites concatenar funciones.
5.
Modo Incorrecto
new Ajax.Request('ninja.php?weapon1=foo&weapon2=bar')
Modo Correcto
- new Ajax.Request('ninja.php',
- {
- parameters:
- {
- weapon1: 'foo',
- weapon2: 'bar'
- }
- }
- )
Escribe código limpio, tu cerebro te lo agradecerá.
6.
Modo Incorrecto
- new Ajax.Request('blah.php',
- {
- method: 'POST',
- asynchronous: true,
- contentType: 'application/x-www-form-urlencoded',
- encoding: 'UTF-8',
- }
- )
Modo Correcto
new Ajax.Request('blah.php')
Todos esos parámetros ya son defaults, ¿Para que repetirlos?.
7.
Modo Incorrecto
Event.observe('myContainer', 'click', doSomeMagic)
Modo Correcto
$('myContainer').observe('click', doSomeMagic)
Es mas fácil concatenar si escoges el segundo, pero aquí es cuestión de gustos, escoge el sabor que mas te guste.
8.
Modo Incorrecto
- $('div.hidden').each(function(el)
- {
- el.show();
- }
- )
Modo Correcto
$$('div.hidden').invoke('show')
Invoke es muy útil, piensa en el como en un atajo cuando necesitas asignar valores iguales a todos tus elementos sin necesidad de iterar sobre ellos.
9.
Modo Incorrecto
- $('div.collapsed').each(function(el)
- {
- el.observe('click', expand);
- }
- )
Modo Correcto
$$('div.collapsed').invoke('observe', 'click', expand)
Y también puede ser usado para manejo de eventos, muy practico!
10.
Modo Incorrecto
$$('input.date').invoke('observe', 'focus', onFocus);
$$('input.date').invoke('observe', 'blur', onBlur);
Modo Correcto
- $('input.date')
- .invoke('observe', 'focus', onFocus)
- .invoke('observe', 'blur', onBlur)
¿Para que abusar del operador $$ dos veces si podemos concatenar?
11.
Modo Incorrecto
- $('productTable').innerHTML =
- $('productTable').innerHTML +
- '' + productId + ' '
- + productName + ''
- + productId + ' ' + productPrice +
- ''
Modo Correcto
- var rowTemplate = new Template('#{id} #{name}#{id} #{price}');
- $('productTable').insert(
- rowTemplate.evaluate(
- {
- id: productId,
- name: productName,
- price: productPrice
- }
- )
- )
- )
Este tip en especial es una joya, con Prototype podemos hacer templates, evitando de esta manera enormes plastas de código. Me confieso culpable de no haber utilizado esto antes.
Enlace | How well do you know prototype