То, что вы делаете, на самом деле известно как jsonp
.Обычно вы должны сделать так, чтобы скрипт возвращал скрипт, вызывающий функцию на вашей странице с данными.Возможно, вам будет проще работать с jQuery, используя jsonp
или, если вы вызываете скрипт на вашем собственном сервере, обычный `json '.
function callback(data) {
... do something with the returned data
}
var elm = document.createElement("script");
elm.setAttribute("type", "text/javascript");
elm.src = "http://totallyExternalURL.php?callback=callback";
elm.id="jsonTest";
console.log(elm);
document.getElementsByTagName('head')[0].appendChild(elm);
Затем верните свой внешний скрипт (заметьте, ваш скриптдолжен определить значение параметра обратного вызова и использовать его в качестве имени вызываемой функции).Имя функции и значение параметра обратного вызова должны совпадать.
callback( { "names" :
[
{"firstName":"Kevin","lastName":"Guo"},
{"firstName":"Jun Sung","lastName":"Wong"},
{"firstName":"Anton","lastName":"Ansalmar"},
{"firstName":"Linda","lastName":"Wong"},
{"firstName":"George","lastName":"Costanza"}
] });
Или с jQuery
$.getJSON( 'http://totallyExternalURL.php?callback=?', function(data) {
... do something with the data ...
});