Löste det genom att lägga in window.open(url); i mysack.onCompletion.
Hej,
Har ett script för att generera PDF'er genom ett gränsnitt. Det funkar så att man gör ett val i två rullistor och sen genereras listan med hjälp av ajax och PHP.
Jag har en "laddar" ruta som visas under tiden rapporten skapas och har nu problem med att dölja den i samband med att rutan "Spara fil som" visas.
Såhär ser js ut (använder SACK):
function create_list(basename){
var comp_id = document.getElementById('comp_id').options[document.getElementById('comp_id').selectedIndex].value;
var doc_type = document.getElementById('doc_type').options[document.getElementById('doc_type').selectedIndex].value;
if(comp_id != "foo" && doc_type != "foo"){
mysack = new sack();
mysack.requestFile = "ajax.competition.create.list.php?comp_id=" + comp_id + "&doc_type=" + doc_type;
mysack.onLoading = function(){ overallHeight('site-overall'); showLayer('site-overall'); showLayer('site-loading'); };
mysack.onError = function(){ alert("create_list() failure: " + mysack.response + "\n"); };
mysack.onCompletion = function(){
var result = mysack.response.split("|");
var status = parseInt(result[0]);
if(status == 200){
alert(result[1]);
}else{
message = "Ett fel uppstod:\n";
for(i = 1; i <= result.length - 1; i++){
message += " - " + result[i] + "\n";
}
alert(message);
}
hideLayer('site-overall');
hideLayer('site-loading');
};
mysack.runAJAX();
}
}
PHP koden:
echo "200|Ok";
$stream = "I'm a text file...\n";
header("Content-type: text/txt;charset=utf-8");
header("Cache-Control: no-store, no-cache");
header("Content-Disposition: attachment; filename=\"foo.txt");
echo $stream;
Problemet är ju att när js tar emot "200|Ok" så slutar scriptet att köras. Vänder jag på det blir det också fel, eftersom headers redan har skickats.
Kan jag lösa det här med ob_start(); / ob_flush()?
Har sett liknande lösningar på andra ställen, bland annat använder Verticalresponse.com samma princip vid nedladdning av rapporter.
Någon som har förslag på lösning? Den här kanske passar bättre i PHP forumet, lite osäker..
Tack!
