Szymon Panecki tracenie czasu
Temat: Ajax a domena
Witam, wszystko wydaję się ok gdy kod json pobierany jest z pliku np: json.jslecz gdy ten sam kod json jest pobierany z linku http://domena.pl/jsonp/page?page=4" niestety nic nie działa.
Gdzie leży mój błąd i ca przeoczyłem? i jak zrobić żeby wreszcie działało
Dziękuję
Szymon
$(document).ready(function() {
var query = "http://domena.pl/jsonp/page?page=4";
$.ajax({
type: "GET",
dataType: "jsonp",
url: query,
success: parseJSON
});
function parseJSON(data){
$.each(data.books, function(i,item){
$('<li></li>').html('<b>Typ:</b> '+item.node.field_foto +'</br><b>Link</b>: '+ item.node +'</br>'+item.node +' - '+item.pubdate).appendTo('#books');
});
}
Piotr
L.
projektowanie user
experience,
interakcji,
architektura i...
Temat: Ajax a domena
a tak:var query = "http://domena.pl/jsonp/page";
$.ajax({
type: "GET",
url: query,
data: "page=4",
dataType: "jsonp",
success: parseJSON
});
czemu GET a nie POST ?
ps. ewantualnie do parametrów możesz użyć też jQuery.param() - http://api.jquery.com/jQuery.param/Piotr L. edytował(a) ten post dnia 16.11.11 o godzinie 09:25
Dariusz Półtorak Programista PHP
Temat: Ajax a domena
A ja zadam głupie pytanie. To ta sama domena na której leży skrypt ? Warto czytać dokumentację. Link:http://api.jquery.com/jQuery.get/
Cytuję:
Due to browser security restrictions, most "Ajax" requests are subject to the same origin policy; the request can not successfully retrieve data from a different domain, subdomain, or protocol.
Chyba w każdym tekście na temat ajaxa jest to wspomniane.
@Piotr Lewandowski
czemu POST a nie GET ? :PDariusz Półtorak edytował(a) ten post dnia 16.11.11 o godzinie 09:38
Szymon Panecki tracenie czasu
Temat: Ajax a domena
Tak, jest w tej samej domenie a i tak nie działa.Wzoruję się na przykładnie z poniższego linku http://jsfiddle.net/FANDS/WtjTz/ w którym pomimo że link jest z innej domeny to wszystko świetnie działa.
Szymon Panecki tracenie czasu
Temat: Ajax a domena
Ktoś pomoże ? Bardzo mi zależy
Szymon Panecki tracenie czasu
Temat: Ajax a domena
Wytłumaczę sprawę najprościej jak potrafię.mam oto taki link
http://domena.pl/zrr/page?page=4
i chciał bym żeby zdjęcia z tego linku były wyświetlane
jako prosty baner na kilku innych moich stronach.
Niby nic trudnego a jednak męczę się z tym prawie tydzień.
Próbowałem z file_get_contents, cURL i nic... Jakiś ślepy zaułek.
Będę bardzo wdzięczny za pomoc.Szymon Panecki edytował(a) ten post dnia 01.12.11 o godzinie 12:48
Adam
Pawliczek
Programista Web
Developer, Devesoft
Software Development
...
Temat: Ajax a domena
Trzeba było tak od razu.Obrazków nie da się ściągnąć ajaxem, obrazki w JS ściąga się "normalnie" (tak jak to robi przeglądarka) podając jego źródło, które jest url'em i może być z innego serwera. W jQuery wygląda to tak: http://jquery-howto.blogspot.com/2009/02/preload-image...
Szymon Panecki tracenie czasu
Temat: Ajax a domena
Ok, ten baner może nie jest taki prosty, jako że strony działają na takiej zasadzie jak czytnik google czyli w miarę przewijania treść jest dostawiana na dole i tak w nieskończoność.Zależy mi żeby owy baner działał tak samo czyli co 1000px dostawiał kolejne zdjęcie a jako że zdjęć jest ponad 4000 to nie mogę sobie pozwolić na załadowanie ich od razu bo trwało by to wieki dlatego chcę użyć AJAXa i wszystko działa gdy kod json jest umieszczony w pliku i ścieżka do niego wygląda tak:
var query = "json.js";
Lecz gdy identyczny kod jason jest pobierany z linku
var query = "http://domena.pl/jsonp/page?page=4";
nie dzieje się nic...
Podane przedtem przykłady są jedynie przykładami tej części kodu która mi nie działa.
A reszta kodu odpowiadająca za wstawienie obrazków jest taka jak a blogu który podałeś Adamie.
i tam działa wszystko ok.
Nie podaję całego kodu ponieważ jest dość skomplikowany i pomieszany, co może tylko skomplikować sprawę.
Są to moje początki z jquery i ogólnie z JS i mam nadzieje że w miarę sensownie to napisałem.
Adam
Pawliczek
Programista Web
Developer, Devesoft
Software Development
...
Temat: Ajax a domena
Nie musisz ściągać wszystkich obrazków, po prostu ładujesz nowe/kolejne zdjęcia z listy (lista ich nazw ze ścieżką), żaden ajax nie jest do tego potrzebny.Poza tym przemyśl jeszcze raz ładowanie do przeglądarki 4000 zdjęć, nawet jeżeli nie ładują się na raz.
Szymon Panecki tracenie czasu
Temat: Ajax a domena
Problem w tym że dane muszą być dostarczane z innej domeny i w formacie json...Nie mam pomysłu jak zrobić to w inny sposób.
Biorąc pod uwagę wysokość zdjęcia 500px i rozmieszczenie co 1000px nie sądzę żeby komuś kiedykolwiek udało się załadować wszystkie, a poza tym każde kolejne 5 zdjęć ma być ładowane po przewinięciu do 50% strony.
Andrzej
Winnicki
Frontend Architect,
Developer &
Magician
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
Szymon Panecki tracenie czasu
Temat: Ajax a domena
Ok Niby wszystko ładnie chodzi i wydawało by się że najgorsze z mną lecz nie mogę sobie poradzić z banalnym połączeniem programów.http://jsfiddle.net/FANDS/CWSeb/
Pierwszy miał się zająć uruchamianiem drugiego lecz jakoś mu to nie wychodzi.
http://jsfiddle.net/FANDS/22g69/
Po alercie nie ładuję kolejnej funkcji
Mniej więcej tak to próbowałem złożyć ale w żaden sposób nie chce działać.
http://jsfiddle.net/FANDS/g5WFM/
