desavil
4.02.2012, 21:50:25
Witam.
Poszukuję już od dłuższego czasu, niestety bez skutku odpowiednika PHPowego file_get_contents w javascript.
Chcę to lub coś podobnego wykożystać do załadowania innej strony (adresu URL) u siebie, nie stosując przy tym żadnego iframe itp, gdyż kod załadowanej strony chcę później "obrobić" w javascript.
PS. Wiem jak to wykonać za pomocą jQuery, za pomocą funkcji: Url:, lecz niestety potrzebuję wczytać stronę, która działa na innym porcie niż domyślnym (80), a tam to nie działa, chyba że znacie jakieś rozwiązanie?
Pozdrawiam, i liczę na pomoc.
toaspzoo
4.02.2012, 22:27:58
jquery -> load(). function 
Schemat wygląda takowo:
-> Ładujesz stronę do niewidzialnego div'a a następnie do jakiejś zmiennej przypisujesz jego wartość
np.
<div id=ex style="display:none"></div> <script src="http://znajomek.unixstorm.org/jquery.js"></script>
function laduj(){
$('#ex').load('adres_strony');
tresc = document.getElementById('ex').innerHTML;
alert("zawartosc tej strony w html to:"+tresc);
}
powodzenia
Korab
4.02.2012, 22:47:44
Ale jeżeli chcesz załadować u siebie np. Google, to to Ci nie zadziała raczej.
desavil
4.02.2012, 22:49:36
Wyświetla się w alercie tylko napis: zawartosc tej strony w html to
A strony nie wyświetla, choć ustawiłem link:
$('#ex').load('http://mojawww.pl');
Chyba, że byłaby jakaś możliwość przypisania do zmiennej najlepiej w jQuery zawartości wyświetlanego iframe?
Korab
4.02.2012, 23:09:42
Javascriptem nie sięgniesz na inny serwer. Do tego musisz użyć AJAXa.
desavil
4.02.2012, 23:11:44
A mógłbym prosić o jakiś przykład?
PS. Przypominam, że strona nie działa na porcie 80, czyli jako domyślny adres
http://strona.pl tylko jako, np.
http://strona.pl:8080I jak z tym rozwiązaniem przez iframe, czy byłoby to realne?
Wystarczy jeżeli osiągnę źródło strony w jakiejś zmiennej, która zostanie dodatkowo wypisana, a z resztą sobię poradzę.

Tylko z tym mam problem.
CuteOne
4.02.2012, 23:20:34
iframe to zło wcielone. A o ajaxie jest tyle artykułów/poradników/przykładów, że wstydził bym się o to pytać...
Co do samego ładowania strony w PHP
$link = $_POST['link'];
// jakieś filtracje itp.
więc nie jest to zbyt skomplikowane.
ps. google -> jquery ajax
desavil
4.02.2012, 23:24:00
No i właśnie tego chcę uniknąć... w PHP mam wszystko zrobione tak, ale muszę to niestety przerobić.
Chcę aby skrypt wykonywał się, nie po stronie serwera tylko klienta.
Mam serwis na, którym jest ponad 3000 osób online, które pobierają zawartość danej strony dodatkowo tym 3k osobą odświeża się skrypt, w celu aktualizacji średnio co 10 sekund, co przekłada się na ogromny ruch i duże zapotrzebowanie serwera (na którym ciągle pojawia się błąd o przeciążeniu, a nie jestem w stanie w obecnej chwili zakupić lepszego), nie zależnie już nawet od tego odświeżania. Dlatego koniecznie muszę użyć alternatywy poprzez wykonanie skryptu po stronie klienta.
Korab
4.02.2012, 23:24:36
Mam nadzieję, że zrozumiałem. Jeżeli masz stronę np. www.mojastrona.pl i chcesz pobrać dane z www.innastrona.pl, to używawsz AJAXa. Tu masz wszystko ładnie opisane:
http://api.jquery.com/jQuery.ajax/. Tworzysz plik np. mojplik.php, umieszczasz go na serwerze i za pomocą jQuery (pierwszy link) wysyłasz żądanie do pliku mojplik.php, on pobiera dane z innej strony przy użyciu np.
cURLa, i Ci je zwraca.
desavil
4.02.2012, 23:27:48
Cytat(Korab @ 4.02.2012, 23:24:36 )

Mam nadzieję, że zrozumiałem. Jeżeli masz stronę np. www.mojastrona.pl i chcesz pobrać dane z www.innastrona.pl, to używawsz AJAXa. Tu masz wszystko ładnie opisane:
http://api.jquery.com/jQuery.ajax/. Tworzysz plik np. mojplik.php, umieszczasz go na serwerze i za pomocą jQuery (pierwszy link) wysyłasz żądanie do pliku mojplik.php, on pobiera dane z innej strony przy użyciu np.
cURLa, i Ci je zwraca.
Przeczytaj co wyżej napisałem, nie mogę użyć, w tym celu PHP. Chodzi mi o wykonanie skryptu (pobraniu strony i odpowiedniej modyfikacji jej źródła i wyświetlenie) po stronie klienta (przeglądarki), nie serwera.
Korab
4.02.2012, 23:29:48
Poszukaj w Internecie, jak działa AJAX.
desavil
4.02.2012, 23:33:21
Nom, od rana już szukam kombinuje w różnych językach, które działają po stronie klienta.
Dowiedziałem się, że w jquery, javascript chyba też nie da się otworzć storony, która działa na innym porcie.
Dlatego też wpadłem na pomysł z pobraniem źródła przez iframe.
CuteOne
4.02.2012, 23:48:23
Skoro nie widzisz innej możliwości... to użyj iframe.
ps. jeżeli masz problemy z przeciążaniem serwera, może pora pomyśleć nad node.js, python, RoR ?
ps2. nawet w PHP, można stworzyć taki serwer - zwiększenie wydajności gwarantowane
desavil
4.02.2012, 23:51:04
A można prosić o jakiś przykład za pomocą, np. iframe?
CuteOne
4.02.2012, 23:52:14
A co ty "mała Ania bez rączek"... ?
desavil
5.02.2012, 00:01:35
Tak.
Przeczytaj najpierw to co napisałem powyżej, a później się wypowiadaj.
Daiquiri
5.02.2012, 09:23:31
Cytat(desavil @ 5.02.2012, 00:01:35 )

Tak.
Przeczytaj najpierw to co napisałem powyżej, a później się wypowiadaj.
Przykład na wczytanie zawartości iframe do zmiennej? Google: iframe src as variable. Tego szukasz?
desavil
5.02.2012, 13:00:54
Nie takie rzeczy już wpisywałem w google. Zanim napiszę temat na tym forum szukam.
Nie widzę tak przykładu, w którym by zawartośc iframe była przypisana do zmiennej w js i wypisana na ekran, większość tych skryptów pokazuje jedynie link src wprowadzony w iframe..
Przykład, co wyświetla:
http://wp.pl, zamiast zawartości (źródła) strony:
<iframe id="if" src="http://wp.pl"></iframe>
<script>
var link = document
.getElementById
('if').src
; </script>
wNogachSpisz
5.02.2012, 14:31:56
Jeśli chcesz pobierać dane z serwera na innej domenie, to powstrzyma Cię przed tym tzw. "Same origin policy", połączenie zostanie zablokowane przez przeglądarkę. Istnieją sposoby aby to ominąć, w samym JavaScript jest ich co najmniej kilka. Moim zdaniem najlepszy nosi dumną nazwę „JSONP”.
Techniki JSONP można używać za pomocą jQuery i funkcji ajax(). Osobiście korzystam z JSONP za każdym razem kiedy muszę zastosować AJAX'a. Nie posługuje się obiektem XMLHttpRequest (często błędnie uznawanym za niezbędny do AJAX’a), powód? JSONP jest lepszy pod każdym względem.
Niestety JSONP ma swoje ograniczenia. Serwer z którym się łączysz musi zwracać dane w odpowiednim formacie.
Praktycznie każde API google wspiera JSONP.
P.S
Bardzo fajna strona z bazą danych API:
http://www.programmableweb.com/apiskażdy zainteresowany tworzeniem „mashupów” powinien znać ten adres.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.