Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Ajax a pobieranie pliku rar
MiXen
post
Post #1





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 16.02.2012

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


Witam! Przepisałem swoją stronę całkowicie na obsługę ajaxa pod JQuery. Jednak został mi jeden problem. Posiadam dział download, gdzie można pobrać pliki, zwykle rar. Kiedyś robiłem to przez zwykłe hiperłączę, albo poprzez header Location. Teraz niestety nie działa tak. Dodam, że plik, który ma ten skrypt jest wywoływany ajaxem a konkretnie funkcją $.load. Czy ktoś mi może z tym problemem pomóc?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
vokiel
post
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Przesyłanie danych binarnych ajaxem jest dość problematyczne, szybkim i sprawnym rozwiązaniem jest utworzenie ukrytej ramki i danie do niej src do pliku.


--------------------
Go to the top of the page
+Quote Post
MiXen
post
Post #3





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 16.02.2012

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


A teraz z polskiego na nasze mógłbyś wytłumaczyć jak to zrobić?wink.gif
Go to the top of the page
+Quote Post
vokiel
post
Post #4





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Masz adres do pliku rar, tak?

[JAVASCRIPT] pobierz, plaintext
  1. function sendFile(fileName){
  2. var url = '/public/files/' + fileName;
  3. var downloadIframe = document.getElementById( 'downloadIframe' );
  4. if ( !downloadIframe ){
  5. downloadIframe = document.createElement( 'iframe' );
  6. downloadIframe.setAttribute( 'id', 'downloadIframe' );
  7. downloadIframe.style['display'] = 'none';
  8. document.getElementsByTagName('body')[0].appendChild( downloadIframe );
  9. }
  10. downloadIframe.setAttribute( 'src', url );
  11. }
  12.  
  13. sendFile('plik.rar');
[JAVASCRIPT] pobierz, plaintext


Oczywiście ścieżki, weryfikację poprawności, uprawnienia, dostęp itd już zostawiam Tobie.


--------------------
Go to the top of the page
+Quote Post
erix
post
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ale co po tym, że prześlesz, jak potem trzeba tego przecież jakoś użyć...


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
MiXen
post
Post #6





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 16.02.2012

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


Niestety, ale to nie działa.
Go to the top of the page
+Quote Post
vokiel
post
Post #7





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Nie działa bo? Jakiś błąd, komunikat, wynik cokolwiek? Czy nie działa "bo nie!"?


--------------------
Go to the top of the page
+Quote Post
MiXen
post
Post #8





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 16.02.2012

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


Przepraszam wink.gif Zapomniałem włączyć firebuga;)
  1. TypeError: document.getElementsByTagName("body")[0] is undefined
  2. [Wstrzymuj na tym błędzie]
  3.  
  4. document.getElementsByTagName('body')[0].appendChild( downloadIframe );


Nikt mi nie jest w stanie pomóc z tym problemem?
Go to the top of the page
+Quote Post
vokiel
post
Post #9





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Otwórz firebuga, ustaw na konsolę i zobacz co się pojawi: http://jsfiddle.net/MuhZN/


--------------------
Go to the top of the page
+Quote Post
MiXen
post
Post #10





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 16.02.2012

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


No pokazuje się to samo, co przesłałem w poprzednim poście.
Go to the top of the page
+Quote Post
vokiel
post
Post #11





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


A z jakiej przeglądari korzystasz?


--------------------
Go to the top of the page
+Quote Post
MiXen
post
Post #12





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 16.02.2012

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


Używam firefoxa.
Go to the top of the page
+Quote Post
sazian
post
Post #13





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

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


głupie pytanie
czy funkcję wywołujesz w onload lub $(document).ready(); questionmark.gif
Go to the top of the page
+Quote Post
MiXen
post
Post #14





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 16.02.2012

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


Nie za bardzo wiem o co chodzi, ale po prostu wywołuję ją normalnie. Kod jest w <script ...></script>
Go to the top of the page
+Quote Post
erix
post
Post #15





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




No tak, tylko że jeśli nie skorzystasz z eventu ready, a element jeszcze nie został zrenderowany przez przeglądarkę (kod jest wykonywany od góry do dołu), to nie dziw się, że nie zadziała.


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
MiXen
post
Post #16





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 16.02.2012

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


@up
To nie było problemem, ale problem leżał w znaczniku body. Troszkę zmieniłem i działa, ogólnie mówiąc dzięki wielkie za pomoc wink.gif
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 Aktualny czas: 20.08.2025 - 11:09