Temat: Ajax a domena
cross-domain policy zabrania Ci komunikacji pomiedzy roznymi domenami. Jedyna opcja ktora mozesz zrobic, to np. request (GET, bo POST nie pojdzie jak dobrze pamietam) do strony. Np. robi sie w taki sposob tracking, gdzie na jakas akcje, robisz requesta do swojego skryptu PHP w innej domenie, a on jakies dane z GETa dodaje do bazy danych - aczkolwiek w tym przypadku JS na stronie nie oczekuje zadnej odpowiedzi.
Jesli chcesz uzywac jsona, to nie ma problemu, ale potrzebujesz callbacka.
Zakladam ze kontrolujesz skrypt i tresc w obydwoch domenach.
- Zrob prosty request GET ajaxem do swojego skryptu. W GET przekaz wszystkie parametry, ktore potrzebujesz (pamietaj ze limit jest 4096 znakow, tak na wszelki wypadek mowie). Nie podpinsasz tutja zadnego "success" czy innych metod. Po prostu zrob requesta jako script. (upewnie sie ze jest to asynchroniczne)
- W JSie gdzie masz swojego AJAX requesta dodaj nowa funkcje
callbackFunction(data) {
alert('callback reached with data!');
alert(data);
}
- odpowiedz JSONowa owin callbackiem....
np: callbackFunction('title':'something','img':'some/url.jpg');
Ta funkcja callbackowa moze dodawac nastepne 5 zdjec (czy ile tam trzeba) do DOM, po akcji jakiejs na stronie.. przesuniecie scrolla, nacisniecie buttona.. cokolwiek ;) grunt zebys zajaxowal a reszta sama sie stanie, jak bedzie gotowa.
W ten sposob zrobisz sobie prostego callbacka z ktorym mozesz zrobic co chcesz a dzieki asynchronicznosci (kocham za to JS) twoj kod wykona sie, jak dostanie odpowiedz od serwera... po sekundzie.. po pieciu... ;) W sumie mozesz zrobic loadera, ktory pokaze ladna animacje "loading" w momencie zaczecia ajaxowania, a wylaczy go, jak tylko odpali callbacka.
ps. chlopaki slusznie mowia o ustawieniu ajaxa na "jsonp" i powinno dzialac z podobna logika opisana wyzej, aczkolwiek mi to nigdy nie pasowalo do moich aplikacji i wolalem robic to po swojemu ;)
Andrzej Winnicki edytował(a) ten post dnia 18.11.11 o godzinie 00:12