Как правильно загрузить JSON с другого домена?

Ситуация:

Есть несколько сайтов в домене sfw.su, они используют общую панель навигации, а также ее локализацию (jquery-localize)



Скрипт локализации грузит нужные json'ы из указанного местоположения и применяет их к элементам согласно фильтров jQuery.



Когда указано два локальных файла, то все ок. Но когда я попытался сделать так: localize('static.sfw.su/path/to/json), то получил ошибку связанную с невозможностью загружать контент с другого домена.



Так как все сайты используют один и тот, же navbar, то идея вынести его локализацию в одно общее место, на мой взгляд рациональная.



Как мне реализовать мою задумку с меньшим геморроем (очень не хотелось бы лезть в код самого jquery-localize)?
  • Вопрос задан
  • 8483 просмотра
Пригласить эксперта
Ответы на вопрос 4
sdevalex
@sdevalex
Для кроссдоменного AJAX нужно использовать JSONP. jquery-localize нужно сделать одну правку тут…
github.com/coderifous/jquery-localize/blob/master/src/jquery.localize.coffee#L51
Ответ написан
wwwsevolod
@wwwsevolod
jsonp
Ответ написан
Комментировать
freeek
@freeek
А

$.getJSON(“http://www.example.com? jsoncallback=?”);


Не помогает?
Ответ написан
monolithed
@monolithed
//remote_host/file.js
getJSON('{
	"foo" : 0,
	"bar" : 1
}');


<script>
	var getJSON = function(data) {
               try {
                      console.log(JSON.parse(data));
               }
               catch (error) {
                     console.log(eval('(' + data + ')'));
              }
	};
	
	(function() {
		var script   = document.createElement('script');
		script.type  = 'text/javascript';
		script.async = true;
		script.src   = '//remote_host/file.js';
		document.body.appendChild(script);
	}());
</script>


Причем, необязательно в функцию getJSON передавать JSON, можно и обычный объект, тогда использовать JSON.parse() не нужно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы