From e1af5faf80ff9a457bcb78757c3eb04b55e931d1 Mon Sep 17 00:00:00 2001 From: David Serduke Date: Wed, 12 Dec 2007 20:54:44 +0000 Subject: [PATCH] Fixed #1750 by adding a url that starts with "//" and is a dataType "script" will now use a cross domain load the same as urls that start with "http". --- src/ajax.js | 2 +- test/unit/ajax.js | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/ajax.js b/src/ajax.js index bf0cf109..35995f6b 100644 --- a/src/ajax.js +++ b/src/ajax.js @@ -219,7 +219,7 @@ jQuery.extend({ // If we're requesting a remote document // and trying to load JSON or Script with a GET - if ( !s.url.indexOf("http") && ( s.dataType == "script" || s.dataType =="json" ) && s.type.toLowerCase() == "get" ) { + if ( (!s.url.indexOf("http") || !s.url.indexOf("//")) && ( s.dataType == "script" || s.dataType =="json" ) && s.type.toLowerCase() == "get" ) { var head = document.getElementsByTagName("head")[0]; var script = document.createElement("script"); script.src = s.url; diff --git a/test/unit/ajax.js b/test/unit/ajax.js index 40ec9641..35f87a88 100644 --- a/test/unit/ajax.js +++ b/test/unit/ajax.js @@ -372,6 +372,7 @@ test("$.get(String, Hash, Function) - parse xml and use text() on nodes", functi test("$.getScript(String, Function) - with callback", function() { expect(2); stop(); + window.foobar = null; $.getScript(url("data/test.js"), function() { equals( foobar, "bar", 'Check if script was evaluated' ); setTimeout(start, 100); @@ -563,6 +564,7 @@ test("$.ajax() - script, Remote", function() { stop(); + window.foobar = null; $.ajax({ url: base + "data/test.js", dataType: "script", @@ -580,6 +582,7 @@ test("$.ajax() - script, Remote with POST", function() { stop(); + window.foobar = null; $.ajax({ url: base + "data/test.js", type: "POST", @@ -592,6 +595,25 @@ test("$.ajax() - script, Remote with POST", function() { }); }); +test("$.ajax() - script, Remote with scheme-less URL", function() { + expect(2); + + var base = window.location.href.replace(/\?.*$/, ""); + base = base.replace(/^.*?\/\//, "//"); + + stop(); + + window.foobar = null; + $.ajax({ + url: base + "data/test.js", + dataType: "script", + success: function(data){ + ok( foobar, "Script results returned (GET, no callback)" ); + start(); + } + }); +}); + test("$.getJSON(String, Hash, Function) - JSON array", function() { expect(4); stop();