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

上面的代码在检索响应内容时工作正常,但是当我用 responseText 替换现有的“div”时,响应页面中的 javascripts 不会被触发。

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

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

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

我已经尝试了几种方法,但它们都不起作用......

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

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

谢谢

4

2 回答 2

1

jQuery:

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

分机:

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 回答