1

jquery ajax を Extjs に変換し、jquery ライブラリの使用を排除しようとしています。

しかし、ここで問題が...

Ext.Ajax.request で ajax 応答をロードした後、ajax されたページからのスクリプトがトリガーされません。

jQuery Ajax 関数:

        $(document).ready(function () {
        $.ajax({
            type: 'POST',
            url: '@Url.Content("~/Test/Header/")',
            success: function (response) {
                $("#header").replaceWith(response);
            }
        });
    });

上記のコードは、適切に表示される ajax コンテンツで完全に機能し、すべての JavaScript が適切に実行されます。

ajax リクエストの Extjs バージョンは次のとおりです。

        Ext.onDocumentReady(function () {
        Ext.Ajax.request({
            method: 'POST',
            url: '@Url.Content("~/Test/Header/")',
            success: function (response) {
                Ext.get('header').dom.outerHTML = response.responseText;
            }
        });
    });

上記のコードは、応答コンテンツを取得する際に正常に機能しますが、既存の「div」を responseText に置き換えると、応答ページの JavaScript がトリガーされません。

これは、要素を正しく置き換えていないためだと思われます。

そのため、要素置換の jQuery バージョンを使用しようとすると、正常に動作します。

私の質問は、Extjs が「div」を置き換える適切な方法は何ですか?

いくつかの方法を試しましたが、どれもうまくいきません...

私の質問を言い換えるより良い方法は... Extjsに相当するものは何ですか:

$("#header").replaceWith(response);

ありがとう

4

2 に答える 2

1

jQuery:

$("#header").replaceWith(response);

extjs:

Ext.get('header').replaceWith(response);
//note: no pound sign

ソース:

http://docs.sencha.com/ext-js/4-1/#!/api/Ext.dom.Element-method-replaceWith

API ドキュメントはあちこちでいくつかのことを見逃していますが、全体としては素晴らしいリファレンスです。楽しみ!

于 2012-10-06T21:53:40.377 に答える
0

私は同じ問題に直面しました。解決策は次のとおりです。

var workspaceCenter = Ext.fly('workspaceCenter');
workspaceCenter.load({
    url     : url ,
    params  : params,
    scripts : true,            <------ this is the trick
    callback : function() {
        Ext.getBody().unmask();
    }
});
于 2012-10-12T09:27:37.110 に答える