我正在尝试将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);
由于
答案 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();
}
});