Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Ajax non fa partire il download

    Ho trovato e adattato il seguente codice php alle mie esigenze, se lo lancio tramite il tag HREF il download parte, ma se lo faccio passare attraverso una chiamata AJAX, non accade nulla...

    Codice PHP:
        function filterData(&$str){        $str preg_replace("/\t/""\\t"$str);
            
    $str preg_replace("/\r?\n/""\\n"$str);
            if(
    strstr($str'"')) $str '"' str_replace('"''""'$str) . '"';
        }

        
    $fileName "lista.xls";
        
    $fields = array('PERIFERICA''MARCA''MODELLO''S/N GESTORE''LOCATION');
        
    $excelData implode("\t"array_values($fields)) . "\n";

        
    $crews = new crews();
        
    $query $crews->esegui_query("SELECT * FROM t_periferiche ORDER BY periferica ASC;");
        foreach(
    $query as $record)
        {
            
    $lineData = array($record['periferica'], $record['marca'], $record['modello'], $record['sn_gestore'], $record['posizione']);
            
    array_walk($lineData'filterData');
            
    $excelData .= implode("\t"array_values($lineData)) . "\n";
        }

        
    header("Content-Type: application/vnd.ms-excel");
        
    header("Content-Disposition: attachment; filename=\"$fileName\"");
        echo 
    $excelData;
        exit; 

    codice:
    varxmlhttp;
    
    functionesporta()
    {
    xmlhttp = GetXmlHttpObject();
    
    if (xmlhttp==null)
        {
    alert ("Il Browser non supporta HTTP Request");
    return;
        }
    
    varf = document.forms["esportazione"];
    varsection = f.elements["section"].value;
    varordina = f.elements["ordina"].value;
    varurl = "section="+section+"&ordina="+ordina;
    
    xmlhttp.open("POST","php/cute/esportaLista.php",true);
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlhttp.setRequestHeader("Content-length", url.length);
    xmlhttp.setRequestHeader("Connection", "close");
    xmlhttp.onreadystatechange = stateChanged;
    xmlhttp.send(url);
    }
    
    functionstateChanged()
    {
    if (xmlhttp.readyState == 4)
        {
    xmlhttp.responseText;
        } else {
    document.getElementById("txtHint").innerHTML = '<span class="red">Esportazione in corso...</span>';
        }
    }
    
    functionGetXmlHttpObject()
    {
    if (window.XMLHttpRequest)
        {
    returnnewXMLHttpRequest();
        }
    if (window.ActiveXObject)
        {
    returnnewActiveXObject("Microsoft.XMLHTTP");
        }
    returnnull;
    }

    Il codice mi restituisce la risposta "Esportazione in corso..." e lì rimane fermo, il download non parte, dove sbaglio e come posso risolvere?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,536
    Ciao,
    Ovviamente non fa nulla in quanto tu non fai nulla con il risultato della chiamata.
    La domanda è: "Se hai già un esportalista.php che si occupa di fornire il documento in download, perché devi passare da ajax?". Sostanzialmente non ha senso...
    Metti un link alla pagina esportalista.php da aprire in una nuova scheda, se il tipo mime è corretto dovrebbe scaricare il file senza spostarti dalla pagina principale. Se non funziona o vuoi per forza farlo tramite ajax esistono altre soluzioni, ma come primo passo dovrebbe bastare.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.