2

リンクの読み込み中に extjs で watingmessage を取得したい。応答は、ダウンロードしたいバイナリコードです。リンクは、たとえば「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;
       ?>

しかし、うまくいきません。リンクをロードするだけで機能しますが、メッセージを待つ必要はありません。

4

1 に答える 1

1

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.

于 2011-03-10T14:21:57.553 に答える