Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [js] pobranie danych w formacie json metodą POST z innego serwera
mjetek
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 2.05.2010

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


Witam, jak w temacie czy mogę w jakiś sposób pobrać dane w formacie JSON z serwera znajdującego się w innej domenie metodą POST, bez przeładowywania strony?
Go to the top of the page
+Quote Post
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




file_get_contents z innego serwera
Go to the top of the page
+Quote Post
mjetek
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 2.05.2010

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


potrzebuję to zrobić używając JavaScriptu i dodatkowo przesłać argumenty.
Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




No to ci mówie, że za pomoca php pobierasz sobie zawartość z innego serwera. A javascriptem wywolujesz ten skrypt.
Go to the top of the page
+Quote Post
mjetek
post
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 2.05.2010

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


Prawdę mówiąc nie rozumie (IMG:style_emoticons/default/smile.gif) Sytuacja wygląda tak, że do serwera z którego chcę pobrać jakieś dane, które produkuje działający tam skrypt PHP nie mam dostępu, nie mogę tam umieścić żadnego kodu. Muszę napisać skrypt, działający po stronie przeglądarki, który te dane odbierze. Wiem że dane, które chcę odebrać będą w formacie JSON. Skrypt ma wysyłać argument metodą POST.
Taki AJAX tylko cross domain (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
wookieb
post
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




1) Ajax wywołuje skrypt SKRYPT.php
2) Skrypt php wywołuje SKRYPT_Z_INNEGO_SERWERA.php (curl, file_get_contents i streamy)
3) SKRYPT.php odpowiada ajaxowi
Go to the top of the page
+Quote Post
#luq
post
Post #7





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

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


Teoretycznie możesz też użyć techniki ukrytej ramki do tego, ale zbudowanie brigde`a (bo to wym mówi @wookieb) jest w sumie prostsze.
Go to the top of the page
+Quote Post
krnombrny
post
Post #8





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 28.10.2008

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


a ja widzę tu problem - zagadnienie z 2 etapu rekrutacji w pewnej firmie webmasterskiej...
Go to the top of the page
+Quote Post
mjetek
post
Post #9





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 2.05.2010

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


(IMG:style_emoticons/default/winksmiley.jpg) ale szukanie pomocy przy rozwiązywaniu problemów na forach internetowych to chyba nic złego?

bridge'a zrobiłem za pomocą samego curla (IMG:style_emoticons/default/winksmiley.jpg) W każdym bądź razie dziękuję za pomoc.

Ten post edytował mjetek 14.05.2010, 10:27:06
Go to the top of the page
+Quote Post
SHiP
post
Post #10





Grupa: Zarejestrowani
Postów: 697
Pomógł: 47
Dołączył: 19.12.2003
Skąd: Lublin

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


Może nieaktualne ale głupoty piszecie. Dane trzeba pobrać za pomocą JavaScript a nie jakichś tam PHP(Tak wynika to z pierwszego postu). Tak więc lepiej zrobić coś takiego:

Kod
    ASCIIEncoding enc=new ASCIIEncoding();
    string postData="dane=daneresc&dane2=dane2tresc";
    byte[] data = enc.GetBytes(postData);

    HttpWebRequest myRequest =
      (HttpWebRequest)WebRequest.Create("http://example.com/plik");
    myRequest.Method = "POST";
    myRequest.ContentType="application/x-www-form-urlencoded";
    myRequest.ContentLength = data.length;
    Stream newStream=myRequest.GetRequestStream();

    newStream.Write(data,0,data.Length);
    newStream.Close();
Go to the top of the page
+Quote Post
#luq
post
Post #11





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

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


@SHiP dlaczego głupoty?
Dlatego piszemy o PHP bo we wszystkich nowoczesnych przeglądarkach zaimplementowaną takie cudo jak The Same Orgin Policy czyli zabezpieczanie przed pobieraniem danych za pomocą obiektu XHR z innej strony (innej domeny, jeśli komunikacja odbywa się na innym porcie, blablabla...) i nomen omen można na czystko zrobić to w JS`ie bo The Same Orgin Policy jest implementowane w przeglądarce (a nie jak większość twierdzi jest to ograniczenie JS`a/Ajax`a!) i tą opcje da się wyłączyć, tyle że 99% ludzi ma tą opcję włączoną i po ich stronie już takie zapytania będą odrzucane już na warstwie przeglądarki.

Wyjścia są 2:
- budowa brigde`a
- technika ukrytej ramki

Co do Twojego kodu, to eee... wyszła nowa wersja ECMAScriptu?
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 17:18