AJAX jak odebrać odpowiedź która jest pdf'em

0

Witam,
Z ajax'em dopiero startuję zmusił mnie do tego preloader który musiałem zrobić. Ale mniejsza o to, mój problem polega na tym że w odpowiedzi na żądanie Ajaxa otrzymuję wygenerowany dynamicznie, pdf. Kiedy odwołuję się do adresu bezpośrednio to fajnie wyskakuje mi okienko "Save as" żeby zapisać wygenerowany plik na dysku, ale nie wiem jak to powinienem obsłużyć jeśli robię to z ajaxem. Treść pdf'a mam w responseText (pisze z palca mogłem pomylić) tylko jak teraz za pomocą JS zmusić przeglądarke do zapisania tego co w zmiennej do pliku pdf?(to co w z miennej to jest już wygenerowany pdf wystarczy zapisać)

Jeśli moje pytanie jest jakieś banalne to wybaczcie ale już od 2 dni siedze i szukam i nic na ten temat nie mogę znaleźć ;/ Może po prostu szukam pod złymi zapytaniami?:/

0

w js'ie to do systemu plików dostępu nie masz, wyobraź sobie jakie niebezpieczeństwo stanowi modyfikowanie plików z poziomu js, wchodzisz sobie na stronę a tu ci usuwa pół systemu...

możesz co najwyżej zaproponować zapis pliku, tak jak przy pobieraniu:
document.execCommand('SaveAs','1',tresc.responseText);

działa to tylko na IE, pewnie Opera i FF mają swoją inną metodę albo parametr wywołania zapisu pliku, poszukaj

0

oczywiscie zdaje sobie z tego sprawe... o to mi chodziło właśnie... myślałem ze moze jednak jest cos uniwersalnego...szukam...

0

a to po co na siłe chcesz to zrobić ajaksem ? czym się różni z jakiegokolwiek punktu widzenia zwykłe przejście na strone z plikiem od tego dziwnego czegoś co próbujesz zrobić ?
jedyna różnica że w rozwiązaniu z pobraniem treści pdf'a przez js, po prostu coś nie zadziała, a po zmianie location.href w 1/1000 przypadków może się zdarzyć że zamiast okienka pobierania pokaże się zawartość pdf'a w oknie przeglądarki

moja rada jest taka że jak nie jesteś pewien jakie są zalety danej technologii i do czego ona właściwie służy to po prostu jej nie używaj

0

a poza tym przesyłając plik binarny tą metodą będzie on raczej 2x większy niż normalnie więc nie potrzebnie obciąży dodatkowo łącze

0

Stosuję Ajax ze względu na to że pdf jest generowany w locie a jego generacja chwilę trwa w tym czasie kiedy się generuje ma sobie latać gif preloader. No i jeśli realizuje to ajaxem to mam kontrole nad wyświetlaniem tego gifa, a jeśli po prostu przechodze na tą strone to ona chwile "wisi" generacja pdfa a potem pojawia sie okienko pobierania tego pdfa.

Chodzi o to żeby użytkownik widział że nic sie nie zepsuło ale coś sie dzieje i żeby po prostu czekał...

0

to przeca w czasie w którym się generuje to i tak nie masz jak wyświetlić postępu, a po wygenerowaniu praktycznie od razu pojawia się okienko zapisu więc wystarczy że po prostu pokażesz tego gifa i przejdziesz i będzie to samo

0

no właśnie nie gdyby tak było to bym tak nie kombinował ;] bo strona się nie zmienia pozostaje ta z której było wywołanie generowania pdfa... ;/

0

No i wlasnie w tym problem, ze sie uparles na ajaxa. Jednak tak naprawde chodzi o uzyskanie efektu wizualnego a nie koniecznie skorzystanie z technologii ajax. W zwiazku z tym zrob to tak, ze zamiast warstwy do ktorej ladujesz responseText zrob w tym miejscu lub tymczasowo wyswietl plywajaca ramke. Wyswietl w niej pusta stronke z gifem ladowania po czym zacznij w niej ladowac pdfa. Wizualnie bedzie tak, ze poki nie wygeneruje sie pdf bedzie sie wyswietlal gif po czym odpali sie okienko zapisu i juz.

0

Nie zaleca się już stosowania pływających ramek... może jakiś inny sposób? Właśnie potrzebuję zrobić takie coś i wcale się nie upieram na ajaxie, po prostu nic lepszego nie przychodziło mi do głowy;/

0

no ale o co ci chodzi ? właśnie strona się nie zmienia, jakby się zmieniała to miałbyś problem
a tak po prostu tuż przed przekierowaniem daj na ekran jakiś gif czy jaki tam pokemonowaty gadżet chcesz i tyle
lol i chce pdf'a pobierać ajaxem a gada że ramek się nie zaleca ;d

0

robiłem tak jak mówisz tylko niestety jak już wrzuciłem tego gifa przy generowaniu to sie już nie wyłączał, poradziłem sobie w inny sposób po prostu pobieram link do wygenerowanego pdfa i robie przekierowanie działa fajnie z ajaxem, bo dostaje link dopiero jak pdf jest wygenerowany.

AJAX'a chciałem użyć żeby wszystko załatwić bez przeładowania strony a między czasie wrzucić migającego gifa, i nie powinieneś mi zarzucać że coś nie tak bo chyba o to chodzi w Ajaxie a pływające ramki odlatują w niepamięć, w specyfikacjach nowych już ich sie nie bierze pod uwage... zresztą nie ważne, problem rozwiązany, topic do zamknięcia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1