Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 5 odgovora
  • 2.216 pregleda

Najnovija ↓

Skidanje fajla radi kroz php ne radi kroz ajax 13.07.2011. u 14:15 · pre 186 meseci #1
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?
Potpis
Beneath civilization's fragile crust, cold chaos churns...
Re: Skidanje fajla radi kroz php ne radi kroz ajax 13.07.2011. u 14:24 · pre 186 meseci #2
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?
Potpis
http://norway.dakipro.com/
Re: Skidanje fajla radi kroz php ne radi kroz ajax 13.07.2011. u 14:42 · pre 186 meseci #3
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....
Potpis
Beneath civilization's fragile crust, cold chaos churns...
Re: Skidanje fajla radi kroz php ne radi kroz ajax 13.07.2011. u 15:00 · pre 186 meseci #4
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.
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Re: Skidanje fajla radi kroz php ne radi kroz ajax 13.07.2011. u 15:20 · pre 186 meseci #5
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>.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme