EXTJS Ajax-запрос и приложение Content-Disposition - PullRequest
2 голосов
/ 09 марта 2011

Я хочу получить watingmess в extjs при загрузке ссылки.Ответ представляет собой двоичный код, который я хочу загрузить.Ссылка, например, "test.php".

    function loadurl(link){

Ext.MessageBox.wait('Loading ...');
Ext.Ajax.request({
    url: link,
    callback: function(options, success, response){
        Ext.MessageBox.updateProgress(1);
        Ext.MessageBox.hide();
        if (success) {
            // response : my attachment
        }
        else {

        }
    },
    scope: this
});

}

          {
                 ...


 //functioncall    
             loadurl('test.php');
      }

Я тоже пробовал в test.php.

       <?php
          header('Content-Disposition: attachment; filename="'.$filename.'"');
          echo $content;
       ?>

Но это не работает.Если я просто загружаю ссылку, она работает, но без ожидания сообщения.

1 Ответ

1 голос
/ 10 марта 2011

В документации ExtJS есть класс под названием LoadMask, который предназначен для отображения загружаемого «счетчика» вместе с коротким сообщением.В вашем случае вы бы использовали его следующим образом:

function loadurl(link){
    var mask = Ext.LoadMask(Ext.getBody(), {msg:"Loading..."})
    mask.show();
    Ext.Ajax.request({
        url: link,
        callback: function(options, success, response){
            if (success) {
                // response : my attachment
            }
            else {

            }
            //do whatever work we need to do, then hide the mask
            mask.hide()
        },
    scope: this
});

Однако, если по какой-либо причине обратный вызов возвращается почти сразу, то возможно, что маска не будет видна, поскольку загруженный файлслишком быстро.Если это проблема, вы можете вызвать задержку, поместив свой запрос Ajax в setTimeout.

...