I'm confused by something I found in the definition of $.ajax in the jQuery
source, and would greatly appreciate it if someone could shed some light on
the matter. The part of the code in question is this (I've made a couple of
minor formatting changes for clarity):
// If we're requesting a remote document
// and trying to load JSON or Script with 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");
/*
* definition of script omitted
*/
head.appendChild(script);
// We handle everything using the script element injection
return undefined;
}
I understand what the test at the top is testing for, but I don't understand
the policy implemented by the code that runs when the test evaluates to
true.
Couldn't a script be requesting simple JSON data ( e.g. the JSON string '[
"foo" ]') via GET? I think the code shown above would cause such a script
to fail.
This code suggests to me that jQuery expects such data to come only from
relative URLs, but I don't understand what justifies this expectation.
TIA!