Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Odpowiednik file_get_contents z PHP
Forum PHP.pl > Forum > Przedszkole
desavil
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
jquery -> load(). function smile.gif

Schemat wygląda takowo:

-> Ładujesz stronę do niewidzialnego div'a a następnie do jakiejś zmiennej przypisujesz jego wartość

np.
  1. <div id=ex style="display:none"></div>
  2. <script src="http://znajomek.unixstorm.org/jquery.js"></script>
  3.  
  4. function laduj(){
  5. $('#ex').load('adres_strony');
  6.  
  7.  
  8. tresc = document.getElementById('ex').innerHTML;
  9.  
  10. alert("zawartosc tej strony w html to:"+tresc);
  11. }
  12. <body Onload="laduj()">


powodzenia
Korab
Ale jeżeli chcesz załadować u siebie np. Google, to to Ci nie zadziała raczej.
desavil
Wyświetla się w alercie tylko napis: zawartosc tej strony w html to
A strony nie wyświetla, choć ustawiłem link:

  1. $('#ex').load('http://mojawww.pl');

Chyba, że byłaby jakaś możliwość przypisania do zmiennej najlepiej w jQuery zawartości wyświetlanego iframe?
Korab
Javascriptem nie sięgniesz na inny serwer. Do tego musisz użyć AJAXa.
desavil
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:8080

I 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ę. smile.gif
Tylko z tym mam problem.
CuteOne
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
  1. $link = $_POST['link'];
  2. // jakieś filtracje itp.
  3.  


więc nie jest to zbyt skomplikowane.

ps. google -> jquery ajax
desavil
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
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
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
Poszukaj w Internecie, jak działa AJAX.
desavil
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
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 smile.gif
desavil
A można prosić o jakiś przykład za pomocą, np. iframe?
CuteOne
A co ty "mała Ania bez rączek"... ?
desavil
Tak.
Przeczytaj najpierw to co napisałem powyżej, a później się wypowiadaj.
Daiquiri
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
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:
  1. <iframe id="if" src="http://wp.pl"></iframe>
  2. <script>
  3. var link = document.getElementById('if').src;
  4. alert(link);
  5. </script>
wNogachSpisz
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/apis
każ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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.