Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * jQuery.ajax mid - CROSS DOMAIN AJAX
- * ---
- * @author James Padolsey (http://james.padolsey.com)
- * @version 0.11
- * @updated 12-JAN-10
- * ---
- * Note: Read the README!
- * ---
- * @info http://james.padolsey.com/javascript/cross-domain-requests-with-jquery/
- */
- jQuery.ajax = (function(_ajax){
- var protocol = location.protocol,
- hostname = location.hostname,
- exRegex = RegExp(protocol + '//' + hostname),
- YQL = 'http' + (/^https/.test(protocol)?'s':'') + '://query.yahooapis.com/v1/public/yql?callback=?',
- query = 'select * from html where url="{URL}" and xpath="*"';
- function isExternal(url) {
- return !exRegex.test(url) && /:\/\//.test(url);
- }
- return function(o) {
- var url = o.url;
- if ( /get/i.test(o.type) && !/json/i.test(o.dataType) && isExternal(url) ) {
- // Manipulate options so that JSONP-x request is made to YQL
- o.url = YQL;
- o.dataType = 'json';
- o.data = {
- q: query.replace(
- '{URL}',
- url + (o.data ?
- (/\?/.test(url) ? '&' : '?') + jQuery.param(o.data)
- : '')
- ),
- format: 'xml'
- };
- // Since it's a JSONP request
- // complete === success
- if (!o.success && o.complete) {
- o.success = o.complete;
- delete o.complete;
- }
- o.success = (function(_success){
- return function(data) {
- if (_success) {
- // Fake XHR callback.
- _success.call(this, {
- responseText: data.results[0]
- // YQL screws with <script>s
- // Get rid of them
- .replace(/<script[^>]+?\/>|<script(.|\s)*?\/script>/gi, '')
- }, 'success');
- }
- };
- })(o.success);
- }
- return _ajax.apply(this, arguments);
- };
- })(jQuery.ajax);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement