Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript] Odpowiednik file_get_contents z PHP
desavil
post 4.02.2012, 21:50:25
Post #1





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

Ostrzeżenie: (0%)
-----


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.

Ten post edytował desavil 4.02.2012, 21:53:04


--------------------
"Nie ma głupich pytań, są tylko głupie odpowiedzi."
Pomogłem?? Kliknij "Pomógł" :) Dzięki!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 18)
toaspzoo
post 4.02.2012, 22:27:58
Post #2





Grupa: Zarejestrowani
Postów: 778
Pomógł: 84
Dołączył: 29.07.2010
Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury.

Ostrzeżenie: (20%)
X----


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

Ten post edytował toaspzoo 4.02.2012, 22:28:11


--------------------

LS Easter egg <
Go to the top of the page
+Quote Post
Korab
post 4.02.2012, 22:47:44
Post #3





Grupa: Zarejestrowani
Postów: 202
Pomógł: 36
Dołączył: 10.06.2011
Skąd: Dokąd

Ostrzeżenie: (0%)
-----


Ale jeżeli chcesz załadować u siebie np. Google, to to Ci nie zadziała raczej.
Go to the top of the page
+Quote Post
desavil
post 4.02.2012, 22:49:36
Post #4





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

Ostrzeżenie: (0%)
-----


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?

Ten post edytował desavil 4.02.2012, 23:06:11


--------------------
"Nie ma głupich pytań, są tylko głupie odpowiedzi."
Pomogłem?? Kliknij "Pomógł" :) Dzięki!
Go to the top of the page
+Quote Post
Korab
post 4.02.2012, 23:09:42
Post #5





Grupa: Zarejestrowani
Postów: 202
Pomógł: 36
Dołączył: 10.06.2011
Skąd: Dokąd

Ostrzeżenie: (0%)
-----


Javascriptem nie sięgniesz na inny serwer. Do tego musisz użyć AJAXa.
Go to the top of the page
+Quote Post
desavil
post 4.02.2012, 23:11:44
Post #6





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

Ostrzeżenie: (0%)
-----


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.

Ten post edytował desavil 4.02.2012, 23:19:58


--------------------
"Nie ma głupich pytań, są tylko głupie odpowiedzi."
Pomogłem?? Kliknij "Pomógł" :) Dzięki!
Go to the top of the page
+Quote Post
CuteOne
post 4.02.2012, 23:20:34
Post #7





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


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

Ten post edytował CuteOne 4.02.2012, 23:21:35
Go to the top of the page
+Quote Post
desavil
post 4.02.2012, 23:24:00
Post #8





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

Ostrzeżenie: (0%)
-----


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.

Ten post edytował desavil 4.02.2012, 23:25:53


--------------------
"Nie ma głupich pytań, są tylko głupie odpowiedzi."
Pomogłem?? Kliknij "Pomógł" :) Dzięki!
Go to the top of the page
+Quote Post
Korab
post 4.02.2012, 23:24:36
Post #9





Grupa: Zarejestrowani
Postów: 202
Pomógł: 36
Dołączył: 10.06.2011
Skąd: Dokąd

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Korab 4.02.2012, 23:25:25
Go to the top of the page
+Quote Post
desavil
post 4.02.2012, 23:27:48
Post #10





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

Ostrzeżenie: (0%)
-----


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.

Ten post edytował desavil 4.02.2012, 23:29:25


--------------------
"Nie ma głupich pytań, są tylko głupie odpowiedzi."
Pomogłem?? Kliknij "Pomógł" :) Dzięki!
Go to the top of the page
+Quote Post
Korab
post 4.02.2012, 23:29:48
Post #11





Grupa: Zarejestrowani
Postów: 202
Pomógł: 36
Dołączył: 10.06.2011
Skąd: Dokąd

Ostrzeżenie: (0%)
-----


Poszukaj w Internecie, jak działa AJAX.
Go to the top of the page
+Quote Post
desavil
post 4.02.2012, 23:33:21
Post #12





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

Ostrzeżenie: (0%)
-----


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.


--------------------
"Nie ma głupich pytań, są tylko głupie odpowiedzi."
Pomogłem?? Kliknij "Pomógł" :) Dzięki!
Go to the top of the page
+Quote Post
CuteOne
post 4.02.2012, 23:48:23
Post #13





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
desavil
post 4.02.2012, 23:51:04
Post #14





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

Ostrzeżenie: (0%)
-----


A można prosić o jakiś przykład za pomocą, np. iframe?


--------------------
"Nie ma głupich pytań, są tylko głupie odpowiedzi."
Pomogłem?? Kliknij "Pomógł" :) Dzięki!
Go to the top of the page
+Quote Post
CuteOne
post 4.02.2012, 23:52:14
Post #15





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


A co ty "mała Ania bez rączek"... ?
Go to the top of the page
+Quote Post
desavil
post 5.02.2012, 00:01:35
Post #16





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

Ostrzeżenie: (0%)
-----


Tak.
Przeczytaj najpierw to co napisałem powyżej, a później się wypowiadaj.

Ten post edytował desavil 5.02.2012, 00:02:00


--------------------
"Nie ma głupich pytań, są tylko głupie odpowiedzi."
Pomogłem?? Kliknij "Pomógł" :) Dzięki!
Go to the top of the page
+Quote Post
Daiquiri
post 5.02.2012, 09:23:31
Post #17





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




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?
Go to the top of the page
+Quote Post
desavil
post 5.02.2012, 13:00:54
Post #18





Grupa: Zarejestrowani
Postów: 339
Pomógł: 3
Dołączył: 15.10.2008
Skąd: Internet

Ostrzeżenie: (0%)
-----


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>


Ten post edytował desavil 5.02.2012, 13:18:55


--------------------
"Nie ma głupich pytań, są tylko głupie odpowiedzi."
Pomogłem?? Kliknij "Pomógł" :) Dzięki!
Go to the top of the page
+Quote Post
wNogachSpisz
post 5.02.2012, 14:31:56
Post #19





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 02:15