Bruk jQuery til å sende Excel-data ved hjelp av AJAX

stemmer
31

Jeg har følgende funksjon når det trekker data fra en database. Den ajax samtalen fungerer som den skal. Hvordan kan jeg sende tabulatordelt data i min suksess funksjon for brukeren? Stille contect typen til application / vnd.ms-excel fungerte ikke. Varsel på suksess viser riktig formaterte dataene.

     function SendToExcel() {
       $.ajax({
           type: GET,
           url: /Search.aspx,
           contentType: application/vnd.ms-excel,
           dataType: text,
           data: {id: ' + asdf + '},
           success: function(data) {
              alert(data);
           },
           error: function (jqXHR, textStatus, errorThrown) {
              alert(jqXHR.responseText);
       }});
     }

Jeg ønsker ikke å vise dataene i nettleseren - Jeg ønsker å sende den til Excel.

EDIT: Jeg fant en måte å gjøre hva jeg ville. I stedet for å omdirigere brukere til en ny side som vil be dem om å lagre / åpne en Excel-fil, åpnet jeg siden i en skjult iframe. På den måten brukerne klikker på en knapp, og de blir bedt om å lagre / åpne en Excel-fil. Ingen side omdirigering. Er det Ajax? Nei, men det løser det virkelige problemet jeg hadde.

Her er funksjonen jeg ringer på knappen klikk:

     function SendToExcel() {
        var dataString = 'type=excel' +
            '&Number=' + $('#txtNumber').val() + 
            '&Reference=' + $('#txtReference').val()

        $(#sltCTPick option).each(function (i) {
             dataString = dataString + '&Columns=' + this.value;
        });

        top.iExcelHelper.location.href = /Reports/JobSearchResults.aspx? + dataString;;
     }
Publisert på 29/09/2008 klokken 15:42
kilden bruker
På andre språk...                            


4 svar

stemmer
13

AJAX er ... feil valg. Omdirigere brukeren til en server ressurs som vil sende dataene ned med riktig MIME-type, og la leseren finne ut hva de skal gjøre med det.

Svarte 29/09/2008 kl. 15:51
kilden bruker

stemmer
2

Siden det benytter Javascript, Ajax er bundet av Javascript er utformet begrensninger, noe som omfatter i samspill med andre prosesser på kundens maskin. I dette tilfellet er det en god ting; du ville ikke ønsker et sted å være i stand til å laste et Excel-dokument automatisk med en ondsinnet makro i det.

Hvis du vil vise dataene i nettleseren, kan du bruke AJAX; ellers, vil du ønsker å bare gi en link til et Excel-dokument og la nettleserens vanlig nedlasting håndtering evner finne ut hva de skal gjøre.

Svarte 29/09/2008 kl. 15:58
kilden bruker

stemmer
0

Det er mulig at du ikke ønsker å gjøre dette med javascript.

Det jeg tror du vil gjøre er å lage et svar side med gruven typen application / csv deretter omdirigere brukeren til den siden. Jeg ville sannsynligvis gjøre en window.open () siden brukeren ikke mister siden de er nå.

Svarte 29/09/2008 kl. 21:28
kilden bruker

stemmer
5

i HTML har jeg et skjema med serie innganger elementer og en knapp som kaller en Javascript-funksjon onclick="exportExcel();


deretter i Javascript-fil:

function exportExcel(){
    var inputs = $("#myForm").serialize();
    var url = '/ajaxresponse.php?select=exportExcel&'+inputs;
    location.href = url;
}

og til slutt en pivot-fil som respons til noe

PHP-kode:

case 'exportExcel':{
                     ob_end_clean();
                     header("Content-type: application/vnd.ms-excel");
                     header("Content-Disposition: attachment;
                     filename=exportFile.xls");
                     echo $html->List($bd->ResultSet($_GET));
                }

$ Html er et objekt som håndterer html, og $ bd er et objekt som returnerer data fra Database sende din egen html bord eller hva du vil.

Svarte 15/12/2010 kl. 20:26
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more