Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   не работает кросс-доменный ajax (https://javascript.ru/forum/jquery/25120-ne-rabotaet-kross-domennyjj-ajax.html)

AquaGen 26.01.2012 08:41

не работает кросс-доменный ajax
 
надо json получить с другого сервера.
$.ajax({
	url: "http://***",
	dataType: "json",
	success: function( data ) {
		alert(data);
	}
});

ничего не работает. с .getJSON() тоже самое. если файл на сервере открывать то alert() открывается, а если с другого сервера, ничего совсем не происходит

Gvozd 26.01.2012 08:47

В общем случае нельзя получить данные с чужого сайта.
Но для некоторых частных случаев можно
http://javascript.ru/ajax/cross-domain-scripting
http://javascript.ru/ajax/cross-origin-2
Но, эти способы имеют ряд ограничений, и для них как правила необходимо внести изменения на сайте-доноре.
Если сайт-донор принадлежит вам, то внести эти изменения не вызовет трудностей, но если он вам не принадлежит, то как правило данные нельзя получить, потому что владелец не вносил изменения в свой сайт, чтобы кто-то могу легко получить данные со своего сайта

AquaGen 26.01.2012 08:51

так апи чужих сайтов никак невозможно использовать? O_o
вот в примере jqueryui.com/demos/autocomplete/#remote-jsonp работает с http://ws.geonames.org/searchJSON, а я хочу данные с http://api.myshows.ru/shows/search/?q=theory никак нельзя их получить?

Gvozd 26.01.2012 09:50

Цитата:

Сообщение от AquaGen
так апи чужих сайтов никак невозможно использовать?

Вы внимательно читаете, то что я пишу?
Если у сайта есть API предназначенное для внешнего использования javascript-ом, то разумеется можно.
Цитата:

Сообщение от AquaGen
вот в примере jqueryui.com/demos/autocomplete/#remote-jsonp работает с http://ws.geonames.org/searchJSON, а я хочу данные с http://api.myshows.ru/shows/search/?q=theory никак нельзя их получить?

в первом примере используется JSONP, а на втором сайте API предоставлено в JSON формате
Ищите API в JSONP формате, либо пробуйте варианты из ссылок выше

AquaGen 26.01.2012 09:57

да все равно не работает
пример из интернета:
$.getJSON('http://twitter.com/users/usejquery.json?callback=?', function(json) { // получение информации о пользователе @ usejquery 
 $('#twitter_followers').text(json.followers_count); // получение числа фоллоуверов из json объекта и размещение в <span>
 });

мой код не работает:
$.getJSON('http://api.myshows.ru/shows/search/?q=doctor', function(json) { 
   alert(); 
 });

Gvozd 26.01.2012 10:21

twitter в вашем примере возвращает JSONP
Точно также, как и ws.geonames.org
И это позволяет их использовать в качестве API доступного из JS подобным образом

А api.myshows.ru возвращает JSON, что не позволяет его использовать в таком качестве

Пожалуйста внимательней читайте мои ответы Вам:
Для того, чтобы API чужого сайта было доступно из JS, оно должно быть соответствующим образом подготовлено(владельцем этого API)

djvibegga 11.02.2012 14:01

Вот по этой теме хорошее описание с примерами работающего кода:
http://devdream.net/?p=65,
http://devdream.net/?p=57.


Часовой пояс GMT +3, время: 11:32.