为什么我在第4236-4242行的ext-all-debug.js中遇到错误?

时间:2011-03-03 12:47:29

标签: javascript extjs

我开发了一个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

enter image description here

有没有人经历过类似的事情,或者知道可能导致这种情况的原因是什么?

附录

是的@ChrisR,这是我可以在我的机器上重现的错误:

enter image description here

它说它在这段代码的第四行得到了错误,但是如果我点击它,它就会让我在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>

1 个答案:

答案 0 :(得分:2)

这是在IE吗?如果是这样,代码中的所有尾随逗号可能都是问题(它们肯定是 问题)。此外,您的第一个项目中有很多重复的配置。尝试不时在您的代码上运行JSLint以捕获类似的内容。