ExtJS AJAX сохранить как диалоговое окно - PullRequest
2 голосов
/ 27 февраля 2012

Я делаю запрос ExtJS AJAX и хочу, чтобы стандартное диалоговое окно «Сохранить как» отображалось пользователю.Файл для загрузки может быть файлом pdf, jpg или png.

На данный момент запрос AJAX успешно отправлен, но поскольку он асинхронный, диалоговое окно не появляется.

Я просто не мог использоватьAJAX, но есть много javascript-кода, который мне нужно использовать перед выполнением запроса, и я не чувствую переписывания его в java.

Мой код выглядит так:

var params = getPrintInfo(form);

Ext.Ajax.request({
    url : 'print',
    method : 'POST',
    params : {
      customData: params.customData,
      dpi: params.dpi,
      format: params.format,
      grid: params.grid,
      title: params.title
    },
autoAbort : false,
    success : function(result, request) {
      if(result.responseText==''){
        //display error message
      }else{
        // display save as dialog box
      }
    }
});

В моем контроллере я устанавливаю заголовки так:

httpResponse.setHeader("Content-disposition", "attachment; filename=" +  this.config.getString("print.file.name")+outputType);

РЕДАКТИРОВАТЬ:

На самом деле нашли это решение:

Ext.DomHelper.append(document.body, {
    tag: 'iframe',
    frameBorder: 0,
    width: 0,
    height: 0,
    css: 'display:none;visibility:hidden;height:1px;',
    src: 'http://blabla.com/f75e927b-2041-473e-86ba-cbbc60dbc285.pdf'
});

Теперь вопрос: Как я могу изменить имя pdf, чтобы оно было более старым, например map.pdf вместо того, чтобы иметь эту длинную уродливую буквенно-цифровую строку?

1 Ответ

1 голос
/ 28 февраля 2012

Вы можете использовать window.open , чтобы сохранить как диалоговое окно , например

window.open('print?parameters...','_blank');
...