2016-08-31 2 views
0

Ich habe einen Handler (Ashx) und ich möchte eine Datei an den Browser auf die neue Registerkarte senden..net Response-Datei - Öffnen Sie neue Registerkarte

Ich weiß, dass ich das JavaScript verwenden kann (wenn ich das JS verwende, zeigt der Browser die Nachricht über das Blockieren von Pop-up - ich möchte diese Nachricht vermeiden), aber ich möchte dies durch Antwort von meinem tun Handler. Gibt es irgendeinen Weg?

Ich versuchte dies, aber dies ist das PDF im selben Fenster

context.Response.Clear(); 
    context.Response.ClearHeaders(); 
    context.Response.ContentType = "application/pdf"; 
    context.Response.BinaryWrite(buffer); 

Ich rufe die Handler von Ajax öffnen:

  $.ajax({ 
       type: "POST", 
       contentType: "application/json; charset=utf-8", 
       url: "Default.aspx/AcceptFormData", 
       data: "{'funcParam': " + JSON.stringify(data) + "}", 
       dataType: "json", 
       success: function (msg) { 
        window.location = "ashx/GetFile.ashx"; 

Dank

Antwort

-1

window.open("ashx/GetFile.ashx");

Versuchen

Als eine Randnotiz ist es ein Benutzer bevorzugt e ob eine neue Registerkarte im Vergleich zu einem neuen Fenster geöffnet werden soll. Siehe Open a URL in a new tab (and not a new window) using JavaScript

Bearbeiten: Wenn Sie den Popup-Blocker vermeiden möchten, scheint die allgemeine Regel zu sein, dass der Popup-Blocker nur window.open() während der Verarbeitung eines direkten Benutzerereignisses erlaubt. Sie haben ein paar Optionen:

  • Make your ajax call synchronous.
  • Präsens ein modal oder ähnliche Seitenelement für den Benutzer während der Ajax-Rückruf mit einem Link oder eine Schaltfläche zum Öffnen des Dokuments und window.open() während des Click-Ereignis aufrufen.

Dokumentation: MDN - Window.open()

+0

in diesem Fall wird der Browser, um den Pop-up-Blocker zeigt. Ich möchte es vermeiden. – user1912372

Verwandte Themen