6 description: Extends the basic Request Class with additional methods for interacting with HTML responses.
8 license: MIT-style license.
10 requires: [Element, Request]
12 provides: Request.HTML
17 Request.HTML = new Class({
27 Accept: 'text/html, application/xml, text/xml, */*'
31 success: function(text){
32 var options = this.options, response = this.response;
34 response.html = text.stripScripts(function(script){
35 response.javascript = script;
38 var match = response.html.match(/<body[^>]*>([\s\S]*?)<\/body>/i);
39 if (match) response.html = match[1];
40 var temp = new Element('div').set('html', response.html);
42 response.tree = temp.childNodes;
43 response.elements = temp.getElements(options.filter || '*');
45 if (options.filter) response.tree = response.elements;
47 var update = document.id(options.update).empty();
48 if (options.filter) update.adopt(response.elements);
49 else update.set('html', response.html);
50 } else if (options.append){
51 var append = document.id(options.append);
52 if (options.filter) response.elements.reverse().inject(append);
53 else append.adopt(temp.getChildren());
55 if (options.evalScripts) Browser.exec(response.javascript);
57 this.onSuccess(response.tree, response.elements, response.html, response.javascript);
62 Element.Properties.load = {
64 set: function(options){
65 var load = this.get('load').cancel();
66 load.setOptions(options);
71 var load = this.retrieve('load');
73 load = new Request.HTML({data: this, link: 'cancel', update: this, method: 'get'});
74 this.store('load', load);
84 this.get('load').send(Array.link(arguments, {data: Type.isObject, url: Type.isString}));