Skip to content

Commit

Permalink
Adding Cross-domain ajax mod
Browse files Browse the repository at this point in the history
  • Loading branch information
padolsey committed Jan 12, 2010
1 parent 4f05708 commit 9cc78e7
Show file tree
Hide file tree
Showing 10 changed files with 1,349 additions and 1 deletion.
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@ Plugins so far:

* [Pulse][2]
* [Macro][3]
* [Cross domain Ajax][4]


[1]: http://james.padolsey.com
[2]: http://github.com/jamespadolsey/jQuery-Plugins/tree/master/pulse/
[3]: http://github.com/jamespadolsey/jQuery-Plugins/tree/master/macro/
[3]: http://github.com/jamespadolsey/jQuery-Plugins/tree/master/macro/
[4]: http://github.com/jamespadolsey/jQuery-Plugins/tree/master/cross-domain-ajax/
9 changes: 9 additions & 0 deletions cross-domain-ajax/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
Cross domain mod for jQuery
---

This small mod for jQuery enables you to make GET requests, accross domains! You can use jQuery's Ajax methods as you usually would.

It uses [YQL][1]. [Read more here][2]!

[1]: http://developer.yahoo.com/yql/
[2]: http://james.padolsey.com/javascript/cross-domain-requests-with-jquery/
75 changes: 75 additions & 0 deletions cross-domain-ajax/jquery.xdomainajax.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
/**
* 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 = protocol + '//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) && o.dataType !== 'JSONP' && 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);
18 changes: 18 additions & 0 deletions cross-domain-ajax/test/1.3.2/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<!DOCTYPE html>
<html>
<head>
<title>QUnit Test Suite</title>
<link rel="stylesheet" href="../qunit.css" type="text/css" media="screen">
<script src="../qunit.js"></script>
<script src="jquery.min.js"></script>
<script src="../../jquery.xdomainajax.js"></script>
<script src="../test.js"></script>
</head>
<body>
<h1 id="qunit-header">jQuery-plus test suite</h1>
<h2 id="qunit-banner"></h2>
<div id="qunit-testrunner-toolbar"></div>
<h2 id="qunit-userAgent"></h2>
<ol id="qunit-tests"></ol>
</body>
</html>
19 changes: 19 additions & 0 deletions cross-domain-ajax/test/1.3.2/jquery.min.js

Large diffs are not rendered by default.

18 changes: 18 additions & 0 deletions cross-domain-ajax/test/1.4a2/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<!DOCTYPE html>
<html>
<head>
<title>QUnit Test Suite</title>
<link rel="stylesheet" href="../qunit.css" type="text/css" media="screen">
<script src="../qunit.js"></script>
<script src="jquery.min.js"></script>
<script src="../../jquery.xdomainajax.js"></script>
<script src="../test.js"></script>
</head>
<body>
<h1 id="qunit-header">jQuery-plus test suite</h1>
<h2 id="qunit-banner"></h2>
<div id="qunit-testrunner-toolbar"></div>
<h2 id="qunit-userAgent"></h2>
<ol id="qunit-tests"></ol>
</body>
</html>
30 changes: 30 additions & 0 deletions cross-domain-ajax/test/1.4a2/jquery.min.js

Large diffs are not rendered by default.

119 changes: 119 additions & 0 deletions cross-domain-ajax/test/qunit.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@

ol#qunit-tests {
font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
margin:0;
padding:0;
list-style-position:inside;

font-size: smaller;
}
ol#qunit-tests li{
padding:0.4em 0.5em 0.4em 2.5em;
border-bottom:1px solid #fff;
font-size:small;
list-style-position:inside;
}
ol#qunit-tests li ol{
box-shadow: inset 0px 2px 13px #999;
-moz-box-shadow: inset 0px 2px 13px #999;
-webkit-box-shadow: inset 0px 2px 13px #999;
margin-top:0.5em;
margin-left:0;
padding:0.5em;
background-color:#fff;
border-radius:15px;
-moz-border-radius: 15px;
-webkit-border-radius: 15px;
}
ol#qunit-tests li li{
border-bottom:none;
margin:0.5em;
background-color:#fff;
list-style-position: inside;
padding:0.4em 0.5em 0.4em 0.5em;
}

ol#qunit-tests li li.pass{
border-left:26px solid #C6E746;
background-color:#fff;
color:#5E740B;
}
ol#qunit-tests li li.fail{
border-left:26px solid #EE5757;
background-color:#fff;
color:#710909;
}
ol#qunit-tests li.pass{
background-color:#D2E0E6;
color:#528CE0;
}
ol#qunit-tests li.fail{
background-color:#EE5757;
color:#000;
}
ol#qunit-tests li strong {
cursor:pointer;
}
h1#qunit-header{
background-color:#0d3349;
margin:0;
padding:0.5em 0 0.5em 1em;
color:#fff;
font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
border-top-right-radius:15px;
border-top-left-radius:15px;
-moz-border-radius-topright:15px;
-moz-border-radius-topleft:15px;
-webkit-border-top-right-radius:15px;
-webkit-border-top-left-radius:15px;
text-shadow: rgba(0, 0, 0, 0.5) 4px 4px 1px;
}
h2#qunit-banner{
font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
height:5px;
margin:0;
padding:0;
}
h2#qunit-banner.qunit-pass{
background-color:#C6E746;
}
h2#qunit-banner.qunit-fail, #qunit-testrunner-toolbar {
background-color:#EE5757;
}
#qunit-testrunner-toolbar {
font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
padding:0;
/*width:80%;*/
padding:0em 0 0.5em 2em;
font-size: small;
}
h2#qunit-userAgent {
font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
background-color:#2b81af;
margin:0;
padding:0;
color:#fff;
font-size: small;
padding:0.5em 0 0.5em 2.5em;
text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
}
p#qunit-testresult{
font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
margin:0;
font-size: small;
color:#2b81af;
border-bottom-right-radius:15px;
border-bottom-left-radius:15px;
-moz-border-radius-bottomright:15px;
-moz-border-radius-bottomleft:15px;
-webkit-border-bottom-right-radius:15px;
-webkit-border-bottom-left-radius:15px;
background-color:#D2E0E6;
padding:0.5em 0.5em 0.5em 2.5em;
}
strong b.fail{
color:#710909;
}
strong b.pass{
color:#5E740B;
}
Loading

0 comments on commit 9cc78e7

Please sign in to comment.