如何用ExtJs ajax responseText替换元素

时间:2012-10-06 00:22:16

标签: javascript jquery dom extjs extjs4

我正在尝试将jquery ajax转换为Extjs并消除对jquery库的使用。

但这是问题......

使用Ext.Ajax.request加载ajax响应后,ajaxed页面中的脚本不会触发。

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;
            }
        });
    });

上面的代码在检索响应内容时效果很好,但是当我用responseText替换现有的'div'时,响应页面中的javascripts不会触发。

我怀疑这是因为我没有正确地替换元素。

因此,当我尝试使用元素替换的jQuery版本时,它可以正常工作。

我的问题是,Extjs替换'div'的正确方法是什么?

我尝试了几种方法,但没有一种方法有效......

改写我的问题的一个更好的方法是...... Extjs相当于:

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

由于

2 个答案:

答案 0 :(得分: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文档在这里和那里都会遗漏一些东西,但总的来说,这是一个惊人的参考。享受!

答案 1 :(得分:0)

我遇到了同样的问题。解决方案是:

var workspaceCenter = Ext.fly('workspaceCenter');
workspaceCenter.load({
    url     : url ,
    params  : params,
    scripts : true,            <------ this is the trick
    callback : function() {
        Ext.getBody().unmask();
    }
});