A basic example URL ='http://www.google.com/search?q=Prototype'; new Ajax.Request('/proxy?url='+ encodeURIComponent(URL), ...{ method: 'get', onSuccess: function(transport) ...{ var notice = $('notice'); if (transport.responseText.match(/<a class=l href="http://prototypejs.org/)) notice.update('Yeah! You are in the Top 10!').setStyle({ background: '#dfd' }); else notice.update('Damn! You are beyond #10...').setStyle({ background: '#fdd' }); } });
Way too many people use Ajax.Requester in a similar manner to raw XHR, defining only an onComplete callback even when they're only interested in "successful" responses, thereby testing it by hand: // This is too bad, there's better! new Ajax.Requester('/your/url', ...{ onComplete: function(transport) ...{ if (200== transport.status) // yada yada yada } }); First, as described below, you could use better "success" detection: success is generally defined, HTTP-wise, as either no response status or a "2xy" response status (e.g., 201 is a success, too). See the example below. Second, you could dispense with status testing altogether! Prototype adds callbacks specific to success and failure, which we listed above. Here's what you could do if you're only interested in success, for instance: new Ajax.Requester('/your/url', ...{ onSuccess: function(transport) ...{ // yada yada yada } });