我开发了一个PHP框架,以应用程序的形式生成 ExtJS代码。
这涉及在第一次调用时构建完整的 ExtJS对象文字,例如:
Ext.onReady(function(){
menuItemStart = new Ext.Panel({
id: 'panelStart',
title: 'Start',
html: 'This is the start menu item.',
cls:'menuItem'
});
...
然后在应用程序中导航由事件处理程序组成,它通过输出ExtJS代码的AJAX加载PHP文件,然后使用此函数执行此代码:
function loadViewViaAjax(url, paramTargetRegion) {
Ext.Ajax.request({
url: url,
success: function(objServerResponse) {
var responseText = objServerResponse.responseText;
var scripts, scriptsFinder=/<script[^>]*>([\s\S]+)<\/script>/gi;
while(scripts=scriptsFinder.exec(responseText)) {
eval(scripts[1]);
}
}
});
}
这很有效。但是,我现在遇到这种情况,当页面从 PHP 而不是通过触发的ExtJS事件处理程序加载时,我得到的错误是多变的,但都来自一个块ext-all-debug.js
文件中的代码,即行4236
和行4242
:
有没有人经历过类似的事情,或者知道可能导致这种情况的原因是什么?
是的@ChrisR,这是我可以在我的机器上重现的错误:
它说它在这段代码的第四行得到了错误,但是如果我点击它,它就会让我在ExtJS库代码中显示上面显示的4242
。
<script type="text/javascript">
clearExtjsComponent(targetRegion);
var panel_form = new Ext.FormPanel({
labelWidth: 100,
frame:true,
style: 'margin: 10px',
title: 'Test Product (TEST PAGE 2)',
bodyStyle:'padding:5px 5px 0',
width: 500,
defaultType: 'textfield',
items: [{
fieldLabel: 'ID',
value: "111",
name: 'id',
width: 370,
hidden: false,
style: 'text-align: right',
name: 'id',
width: 50,
hidden: false,
},{
fieldLabel: 'Product',
value: "Paper",
xtype: 'displayfield',
name: 'product',
width: 370,
hidden: false,
},{
fieldLabel: 'Label',
value: "none",
name: 'product3',
width: 370,
hidden: false,
},{
fieldLabel: 'Label',
value: "first line\<br/>second line\<br/>third line",
xtype: 'displayfield',
height: 100,
xtype: 'displayfield',
name: 'product4',
width: 370,
hidden: false,
}
],
buttons: [{
text: 'Save',
handler: function() {
if(panel_form.getForm().isValid()){
panel_form.getForm().getEl().dom.action = 'backend/application/help/test';
panel_form.getForm().getEl().dom.method = 'POST';
panel_form.getForm().submit({
success : function(form, action) {
replace_region_with_uri_content('backend/modules');
}
})
} else {
Ext.Msg.minWidth = 360;
Ext.Msg.alert('Invalid Form', 'Some fields are invalid, please correct.');
}
}
},{
text: 'Cancel',
handler: function(){
replace_region_with_uri_content('backend/modules');
}
}]
});
replaceComponentContent(targetRegion, panel_form);
hideComponent(regionHelp);
</script>
答案 0 :(得分:2)
这是在IE吗?如果是这样,代码中的所有尾随逗号可能都是问题(它们肯定是 问题)。此外,您的第一个项目中有很多重复的配置。尝试不时在您的代码上运行JSLint以捕获类似的内容。