2010-06-24 15 views
6

eine Datei in ASP.Net zu speichern habe ich eine Schaltfläche, die eine serverseitige Skript jQuery und Ajax verwendet rufen Sie eine Textdatei zu erstellen und die folgende Antwort zurückschickt:JQuery und Ajax

Response.ContentType = "csv"; 
Response.AddHeader("Content-disposition", "attachment; filename=" + fName); 
Response.ContentType = "application/octet-stream"; 
Response.BinaryWrite(btFile); 
Response.End(); 

jedoch , das Speichern-Dialogfeld wird nicht angezeigt. Wenn ich Ajax nicht verwende und einen vollständigen Postback mit demselben Code ausführe, funktioniert es. Irgendwelche Ideen?

Hier ist der jQuery-Code:

$(function() { 
    $('#reportButton').click(function() { 
     $.ajax({ 
      type: "POST", 
      url: "GenerateReport.aspx", 
      data: "id=0", 
      success: function(){ 
      } 
     }); 
    }); 
}); 

Antwort

3

Anstatt AJAX zu verwenden (was nicht funktioniert, wie Brian erwähnt), können Sie es fälschen, indem Sie jQuery verwenden, um dynamisch ein Formular und einen iframe zu erstellen . Here is an example I found - Sie sollten die Kommentare für einige Verbesserungen lesen (wie die Verwendung eines dynamisch erstellten Iframes, um Probleme zu vermeiden, wenn Ihre Seite nicht die richtigen Header zurückgibt).

1

Ich denke, das Problem ist die AJAX, und wenn die Anforderung als Standardanforderung außerhalb JQuery gemacht wurde, würden Sie das Dialogfeld speichern erhalten. JQuery-Anfragen würden die Daten zum Callback streamen ...