2016-08-31 3 views
0

У меня есть обработчик (ashx), и я бы хотел отправить файл в браузер на новую вкладку..net Файл ответов - открыть новую вкладку

Я знаю, что я могу использовать JavaScript (когда я использую JS, браузер показывает сообщение о блокировке всплывающего окна - я бы хотел, чтобы это сообщение не было), но я хотел бы сделать это с помощью Response from my обработчик. Там в любом случае?

Я попробовал это, но это открыть PDF в том же окне

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

Я вызываю обработчик от Ajax:

  $.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"; 

Благодарности

ответ

-1

Попробуйте window.open("ashx/GetFile.ashx");

В качестве примечания стороны, это пользовательские предпочтения e, нужно ли открывать новую вкладку в новом окне. См. Open a URL in a new tab (and not a new window) using JavaScript

Редакция: Если вы хотите избежать блокировки всплывающих окон, общее правило, похоже, заключается в том, что блокиратор всплывающих окон разрешает только window.open() во время обработки прямого пользовательского события. У вас есть несколько вариантов:

  • Make your ajax call synchronous.
  • Present модальный или аналогичный элемент страницы для пользователя во время обратного вызова Ajax с помощью ссылки или кнопки, чтобы открыть документ и называем window.open() во время события щелчка.

Документация: MDN - Window.open()

+0

в этом случае браузер показывает блокировщик всплывающих окон. Я бы хотел этого избежать. – user1912372

Смежные вопросы