evalResponse: function() { try { return eval(this.transport.responseText); } catch (e) { this.dispatchException(e); } },
/** * 回调函数定义在 this.options 属性中,比如: var option = { onLoaded : function(req) {...}; ...... } new Ajax.Request(url, option); */ respondToReadyState: function(readyState) { var event = Ajax.Request.Events[readyState]; var transport = this.transport, json = this.evalJSON();
if (event == 'Complete') { try { (this.options['on' + this.transport.status] || this.options['on' + (this.responseIsSuccess() ? 'Success' : 'Failure')] || Prototype.emptyFunction)(transport, json); } catch (e) { this.dispatchException(e); }
if ((this.header('Content-type') || '').match(/^text\/javascript/i)) this.evalResponse(); }
try { (this.options['on' + event] || Prototype.emptyFunction)(transport, json); Ajax.Responders.dispatch('on' + event, this, transport, json); } catch (e) { this.dispatchException(e); }
if (event == 'Complete') this.transport.onreadystatechange = Prototype.emptyFunction; },
dispatchException: function(exception) { (this.options.onException || Prototype.emptyFunction)(this, exception); Ajax.Responders.dispatch('onException', this, exception); } });
/** * Ajax.Updater 用于绑定一个html元素与 XmlHttp调用的返回值。类似与 buffalo 的 bind。 * 如果 options 中有 insertion(from dom.js) 对象的话, insertion 能提供更多的插入控制。 */ Ajax.Updater = Class.create();
Object.extend(Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype), { initialize: function(container, url, options) { this.containers = { success: container.success ? $(container.success) : $(container), failure: container.failure ? $(container.failure) : (container.success ? null : $(container)) }
this.transport = Ajax.getTransport(); this.setOptions(options); |