Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wysyłanie pliku XML i odbieranie obrazka
Forum PHP.pl > Forum > XML, AJAX > AJAX
Mackos
Witajcie!
Obecnie mam problem tego typu iż muszę generować i wysyłać plik XML o określonych parametrach na dany URL i w odpowiedzi mam otrzymywać obrazek .gif
O ile udało mi się znaleźć jakiś kod do wysyłania tych plików XML na serwer, tak nie mam pojęcia w jaki sposób realizować odbiór GIF'a i jego zapis na moim serwerze.

A odnośnie jakiegoś kodu to wygląda on tak:
Kod
function postFile()
{
var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");

xmlhttp.open("POST", "http://yoursite.com/sample.xml", false);
xmlhttp.send();

alert(xmlhttp.ResponseText);
}

I mam też kilka pytań (jako że z AJAX'em u mnie ciężko).
Czy to jest w ogóle dobry kod do wysyłania 'plików'?
Dlaczego tam jest "false" zamiast "true" ?
I czy czasem modyfikacja "alert(xmlhttp.ResponseText);" nie jest częściową odpowiedzią na to czego szukam - czyli odbioru odpowiedzi od serwera ?
erix
Cytat
I czy czasem modyfikacja "alert(xmlhttp.ResponseText);" nie jest częściową odpowiedzią na to czego szukam - czyli odbioru odpowiedzi od serwera ?

Owszem.

A jedynym sposobem, żeby ten obrazek wyświetlić, to src="data: - powinieneś już po tym coś znaleźć. winksmiley.jpg
thek
Zależy jak otrzymujesz ten obrazek. Czy w formie ścieżki na serwerze odpytywanym, czy może dane binarne. Nie wiemy nic o formacie tych danych. Jeśli to pierwsze to masz zero problemów. Bierzesz ową ścieżkę i robisz zwyczajne pobranie zawartości fopen, file_get_contents czy inne tego typu. Jeśli to dane binarne, to najpewniej są one zakodowane jako base64 i musisz je zdekodować i zapisać na serwerze jako odpowiedni plik.
erix
Cytat
to najpewniej są one zakodowane jako base64 i musisz je zdekodować i zapisać na serwerze jako odpowiedni plik.

I patrz teraz na mojego poprzedniego posta. winksmiley.jpg
Mackos
Ok, wybaczcie mi ale trochę nie ogarniam tego wszystkiego...
Czyli funkcja wysyłająca i odbierająca dane ma znajdować się w pliku .php tak ?
I teraz tak w jaki sposób ja mam wysyłać tą funkcję którą wyżej podałem na ustalony adres http ?

Przyznam szczerze że wydaje się to być łatwe jednak moja niewiedza dot. AJAXa jest dość sporą barierą, wiec mam nadzieje że pomożecie mi przez to przebrnąć smile.gif

______________________________________________
EDIT:

Ok, googlowałem troche na ten temat, i naprawde jestem już zdesperowany... Nie mam pojęcia jak to zrobić!
Próbowałem już kilku tutoriali jak np. ten:
http://internetmaker.pl/artykul/3289,4,aja...e_aplikacje_www
Jednak to co próbuję osiągnąć jest ponad moje możliwości, a dokładniej chce zrobić tak:
Wysyłanie pliku XML na zdalny serwer -> Otrzymanie odpowiedzi w XML, wycięcie stamtąd kodu w wybranym znaczniku, odesłanie go z powrotem i odebranie ciągu znaków z kolejnego pliku XML.

Proszę (chyba po raz pierwszy) o wyczerpujące wskazówki ponieważ nic nie mogę znaleźć konkretnego ani żadnego rezultatu uzyskać.

Pozdrawiam!
erix
Ale konkretniej, z czym masz problem? Tylko nie pisz, że ze wszystkim, bo takie pytania są do wyjaśnienia na poziomie kursu.

Stajesz przed jakimś zadaniem i coś na pewno Ci sprawia trudność, konkretnego.
Mackos
No więc chce drobnymi kroczkami dojść do tego wszystkiego do tego stopnia żebym mógł osiągnąć swój cel, (bo jak się wszystko robi na hura to się nic nie zrobi dobrze)
I teraz podążając za w3schools zrobiłem sobie plik XML krasnoludki.xml
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2.  
  3. <PIOSENKA>
  4.  
  5. <TYTUL>Krasnoludki</TYTUL>
  6.  
  7. <TEKST>My jestesmy krasnoludki ...</TEKST>
  8.  
  9. <AUTOR>NIEZNANY</AUTOR>
  10.  
  11. </PIOSENKA>


I próbowałem go wmontować pod ten przykład:
http://www.w3schools.com/ajax/ajax_xmlfile.asp
No i niestety fiasko, jednak nie załamywałbym się jeszcze gdyby nie fakt że spróbowałem to wdrożyć do pliku podanego tutaj:
http://www.w3schools.com/ajax/ajax_examples.asp
I częściowo mi się udało, mówię częściowo tylko dlatego że nie do końca wiem jak moge wyłuskać tekst z konkretnych znaczników.
Ten 'działający' plik wygląda następująco:
  1. <script type="text/javascript">
  2. function loadXMLDoc(url)
  3. {
  4. if (window.XMLHttpRequest)
  5. {// code for IE7+, Firefox, Chrome, Opera, Safari
  6. xmlhttp=new XMLHttpRequest();
  7. }
  8. else
  9. {// code for IE6, IE5
  10. xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  11. }
  12. xmlhttp.onreadystatechange=function()
  13. {
  14. if (xmlhttp.readyState==4 && xmlhttp.status==200)
  15. {
  16. document.getElementById('TYTUL').innerHTML=xmlhttp.status;
  17. document.getElementById('PIOSENKA').innerHTML=xmlhttp.statusText;
  18. document.getElementById('AUTOR').innerHTML=xmlhttp.responseText;
  19. }
  20. }
  21. xmlhttp.open("GET",url,true);
  22. xmlhttp.send();
  23. }
  24. </head>
  25.  
  26. <h2>Retrieve data from XML file</h2>
  27. <p><b>Status:</b><span id="TYTUL"></span></p>
  28. <p><b>Status text:</b><span id="PIOSENKA"></span></p>
  29. <p><b>Response:</b><span id="AUTOR"></span></p>
  30. <button onclick="loadXMLDoc('krasnoludki.xml')">Get XML data</button>
  31.  
  32. </body>
  33. </html>
  34.  
  35.  

I z porównania tych dwóch plików html (nie działającego i działającego), domyślam się że 'xmlhttp.status' wyświetla status numerycznie czyli np.200
'xmlhttp.statusText' to samo tylko słownie, a xmlhttp.responseText treść pliku.
Jednak gdy dodałem drugą identyczną linijkę z ID innego znacznika to skrypt przestał dzialać. Więc obecnie potrzebuje zrozumieć w jaki sposób i na jakich zasadach następuje pobieranie danych z XML'a.
(mam nadzieję że nie napisałem zbyt chaotycznie, aha i wszystko testuje na lokalnie zainstalowanym XAMPP).

Alternatywnie mogę wykorzystać do zrobienia tego całego skryptu (celu finalnego) pliki z SOAP ale nie wiem, czy to już nie za głęboka woda dla mnie skoro mam z tym problem.
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.