Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Skidanje fajla radi kroz php ne radi kroz ajax

[es] :: PHP :: Skidanje fajla radi kroz php ne radi kroz ajax

[ Pregleda: 1510 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Tyler Durden
Tyler Durden
Beograd

Član broj: 4312
Poruke: 3379
*.verat.net.



+1365 Profil

icon Skidanje fajla radi kroz php ne radi kroz ajax13.07.2011. u 13:15 - pre 155 meseci
Da ne objašnjavam problem, evo konkretno šta se dešava.

Fajl

Code (php):

<?php

//echo "test ajax";

header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=excel.xls");

echo '<table border="1">
<tr>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
</tr>
</table>'
;


?>
 


kad se direktno pozove iskoči prozor za skidanje ovog excel fajla i sve radi kako treba.

Kad ubacim u priču fajl index.php u kome se nalazi ajax koji poziva ovaj fajl gore naveden, ne dobijam dialog za skidanje fajla već se samo ispiše na stranici ono što bi trebalo da bude u excel fajlu kad se sačuva.
Sadržaj index.php
Code (php):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="sr">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>

<script type="text/javascript">
  var theDIV; // we will set this to an id that actually exists in the page

  var http_request = false;
  function fromServer()
  {
    if( http_request.readyState==4 )
    {
      if( http_request.status==200 )
      {
// results from call to the server appear here
// in http_request.responseText;
        e = document.getElementById(theDIV);
        e.innerHTML = http_request.responseText;
      }
      else
      {
// uncomment next line if you want to show any error messages
        //alert('error: ' + http_request.responseText);
      }
    }
  }



  function makeRequest(url, parameters)
  {
    http_request = false;
    if( window.XMLHttpRequest )
    {
      // Mozilla, Safari,...
      http_request = new XMLHttpRequest();
      if (http_request.overrideMimeType)
      { http_request.overrideMimeType('text/html');
      }
    }
    else if (window.ActiveXObject)
    { // IE
      try
      { http_request = new ActiveXObject("Msxml2.XMLHTTP");
      }
      catch (e)
      { try
        { http_request = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {}
      }
    }
    if (!http_request)
    {
// uncomment next line if you want to show any error messages
      //alert('Cannot create XMLHTTP instance');
      return false;
    }
    http_request.onreadystatechange = fromServer;
    http_request.open('GET', url + parameters, true);
    http_request.send(null);
  }

</script>
</head>

<body>

<script type="text/javascript">
var url = "excel.php"
theDIV='div_ajax';
qry = "?";
makeRequest(url,qry);
</script>

<div id="div_ajax"></div>

</body>
</html>
 


U čemu je problem i zašto se ovo dešava?
Beneath civilization's fragile crust, cold chaos churns...
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1792
*.dynamic.sbb.rs.

Sajt: norway.dakipro.com


+190 Profil

icon Re: Skidanje fajla radi kroz php ne radi kroz ajax13.07.2011. u 13:24 - pre 155 meseci
Ne pomazem i siguran sam da imas dobar razlog, ali me zanima zasto ides ajaxom direktno na fajl?
sto recimo na link ne bi vodio direkt ka fajlu ili ka php fajlu koji salje xls fajl? Ili na event (ako nije na click, kako vec trigerujes ajax) ne otvoris _blank prozor i odvedes direktno ka fajlu, mislim da vecina browsera to lepo bezbolno handluju na isti nacin kako bi dobio efekat koji si zamislio ajaxom. Jer zahtev iz brosera serveru ka fajlu dodje skoro pa isto (barem za korisnika) kao da je ajaxom dovucen fajl.
Iskreno nisam imao prilike da dodjem do slicnog problema uopste pa me zanima iz kog razloga uopste moras ajaxom to sto si zamislio?
 
Odgovor na temu

Tyler Durden
Tyler Durden
Beograd

Član broj: 4312
Poruke: 3379
*.verat.net.



+1365 Profil

icon Re: Skidanje fajla radi kroz php ne radi kroz ajax13.07.2011. u 13:42 - pre 155 meseci
Ma! :)
To je nazalost zatecena situacija, i moze se reci da ostale opcije ne odgovaraju, nego mi je potrebno rijesenje bas za ovo.
Zanima me vise zasto dolazi do ovakvog ponasanja....
Beneath civilization's fragile crust, cold chaos churns...
 
Odgovor na temu

Aleksandar Ružičić
Software Architect, Appricot d.o.o.
Beograd

Član broj: 26939
Poruke: 2881

Jabber: krckoorascic@gmail.com
Sajt: krcko.net


+44 Profil

icon Re: Skidanje fajla radi kroz php ne radi kroz ajax13.07.2011. u 14:00 - pre 155 meseci
Ne mozes to ajaxom, svrha xmlhttprequest objekta je da ti hendlujes rezultat koji dobijes a ne browser (i jedno od ogranicenje xhr-a je da moze da primi samo text kao rezultat). Browser nece gledati da li je server za xhr upit vratio Content-Disposition: attachment i posto ne zna da je u pitanju download fajla nece ni ponuditi open/save dijalog.

Probaj da jednostavno stavis window.location = url; to bi trebalo da radi u svim browserima bez problema.
 
Odgovor na temu

vatri
Banja Luka, RS

Član broj: 68697
Poruke: 1006
*.static.stelkom.net.



+18 Profil

icon Re: Skidanje fajla radi kroz php ne radi kroz ajax13.07.2011. u 14:20 - pre 155 meseci
Odgovor na tvoje pitanje je sledeca naredba:

Code:
e.innerHTML = http_request.responseText;


Ti to sto ti vrati skripta ispises unutar div-a i to je to.

Rjesenje ti je ili ovo sto ti je Aleksandar rekao ili da stavis u <a href="excel.php">Download</a>.
 
Odgovor na temu

Tyler Durden
Tyler Durden
Beograd

Član broj: 4312
Poruke: 3379
*.adsl.verat.net.



+1365 Profil

icon Re: Skidanje fajla radi kroz php ne radi kroz ajax13.07.2011. u 19:18 - pre 155 meseci
Hvala na pomoci, nesto sam iskombinovao i sredio problem.
Beneath civilization's fragile crust, cold chaos churns...
 
Odgovor na temu

[es] :: PHP :: Skidanje fajla radi kroz php ne radi kroz ajax

[ Pregleda: 1510 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.