Javascript ruft im Hintergrund PHP-Skript auf

Hallo liebe Leute :smile:,

schönen Dank schon mal für die Hilfe. Also, ich habe folgende Frage bzw. folgendes Problem.

Ich habe eine Hauptseite mit einem Button. Wenn ich auf den klicke, will ich Javascript-Variablen an eine PHP-Datei übergeben, die eine Datenbankabfrage macht und ein Excel-Sheet auswirft. Die Hauptseite soll aber stehen bleiben, ich möchte nicht umgeleitet werden oder sonst was. Wie rufe ich die Seite auf, bis jetzt fällt mir nur

window.location.href = „generate_excel.php“

ein, macht man das so oder gibt es andere Möglichkeiten, irgendwie scheint mir das nur eine Notlösung zu sein ??

Danke und Gruß

Chris

Hallo Chris,

Ich habe eine Hauptseite mit einem Button. Wenn ich auf den
klicke, will ich Javascript-Variablen an eine PHP-Datei
übergeben, die eine Datenbankabfrage macht und ein Excel-Sheet

das alles läuft im Prinzip so:

der button hat ein onclick-event
dieser ruft eine function auf
in der function wird der querystring zusammengebaut
und zb. mit object.src=„generate_excel.php?query_string“
an die php geschickt
für das object eignet sich ein img-element, das auf hidden und/oder auf 1px gesetzt ist

mit Ajax geht es natürlich auch, aber da Du ja sowieso den response nicht bearbeiten/ausgeben willst, ist es mit src einfacher.

Wie oder was genau willst Du denn jetzt wissen?

Gruß
Klaus

Danke, aber so gehts komischer weise nicht…

hauptseite, das ist die Javascript-Funktion:


function excel_ausgeben(){
object.src=„generate_excel.php“;
}

php-Datei (ich nutze das Pear-Paket )generate_excel.php:// Creating a workbook$workbook …

function excel_ausgeben(){

object.src=„generate_excel.php“;

}

object ist ein html-object, wie geschrieben z.b. ein img-object :smile:)

um auf objecte zuzugreifen gibt es mehrere möglichkeiten.
nehmen wir mal über ID.
im body steht irgendwo:

dann würde so src geändert bzw. die php aufgerufen:

document.getElementById(‚fake‘).src=„generate_excel.php“;

Gruß
Klaus

Hallo

Ich habe eine Hauptseite mit einem Button. Wenn ich auf den
klicke, will ich Javascript-Variablen an eine PHP-Datei
übergeben, die eine Datenbankabfrage macht und ein Excel-Sheet
auswirft. Die Hauptseite soll aber stehen bleiben, ich möchte
nicht umgeleitet werden oder sonst was. Wie rufe ich die Seite
auf, bis jetzt fällt mir nur
window.location.href = „generate_excel.php“

Das geht gut, ich habs mal eben probiert. Du brauchst
ein html-file (xlsbutton.html) und ein php-file
(generate_excel.php). So wie Du Dirs gedacht hast,
müßte es wie folgt aussehen:

[xlsbutton.html]
Excel Ausgabe
function getexcel(f) {
var prog = ‚generate_excel.php‘;
var str = prog + ‚?name=‘+f.fname.value + ‚&wert=‘+f.wert.value;
var win=window.open(str, ‚Excel‘,’’);
}
Excel Test
Press Button

[generate_excel.php]

<?php # prepare header
$fname = $\_GET['name']; $wert = $\_GET['wert']; header("Content-type: application/vnd.ms-excel"); header("Content-disposition: attachment; filename={$fname}\_{$wert}.xls"); # get xls data (from DB or elsewhere) $fn = 'datenquelle.xls'; $fh = fopen($fn, 'r'); $contents = fread($fh, filesize($fn)); fclose($handle); # write xls data print $contents; ?\> Jetzt mußt Du nur noch Deine Excel-Generierung einbauen. Ich habe ein vorhandenes .xls-File eingelesen und wieder ausgegeben. Grüße CMБ

wunderbar :wink:, es funktioniert…

danke auch an KKO,

ich habe somit auch gleich noch andere Fehler ausmerzen können…

Gruß Chris

wunderbar :wink:, es funktioniert…

klar doch :smile:

Du solltest die values aus dem Formular aber noch mit encodeURI() behandeln, denn URL und QuerySring dürfen weder Leerzeichen noch Zeichen außerhalb ASCII beinhalten.

Gruß
Klaus