ExtJS,IE7表单提交问题

时间:2011-06-28 14:33:36

标签: javascript extjs internet-explorer-7

我有一个使用'form'xtype定义的ExtJS表单面板。当用户点击提交时,此表单的网址会根据其所在的页面进行更改。这是一个文件上传表单。在IE7中,url参数被完全忽略,返回的字符串是来自网站根目录的HTML。在IE8,FF和Chrome中,这非常适用。

是否有某种安全设置或其他我应该寻找的东西? URL参数似乎被完全忽略,导致文件上传失败。

表格代码(表格在窗口中):

items: [{
            xtype: 'form',
            fileUpload: true,
            baseCls: 'x-window',
            bodyStyle: 'font-family:tahoma;font-size:12px;',
            defaults: {
                bodyStyle: 'font-family:tahoma;font-size:12px;',
                width: 200
            },              
            items: [{
                xtype: 'hidden',
                name: 'action',
                value: 'import'
            }, {
                xtype: 'fileuploadfield',
                fieldLabel: 'Import File',
                name: 'uit'
            }]
        }],
        fbar: [{
            text: 'Import',
            handler: this.handleImportFn,
            scope: this
        }, {
            text: 'Cancel',
            handler: function () {
                var myB = this;
                myB.disable();
                this.ownerCt.ownerCt.hide();
                myB.enable();
            }
        }]

表格提交:

            form.submit({
            params: {
                id: id
            },
            url: this.superParent.myBasicURL // This has been verified valid,
            waitMsg: 'Uploading file',
            success: function (form, action) {
                var resp = Ext.decode(action.response.responseText),
                    addSucc = resp.addSucc || false,
                    msg = 'Import completed successfully.';

                if (addSucc) {
                    if (typeof resp.skipped !== 'undefined' && resp.skipped > 0) {
                        msg += "  " + resp.skipped + " records skipped [" + resp.skips + "].";
                    }
                    Ext.MessageBox.alert("Info", msg);
                    myStore.load();
                    myWin.hide();
                }
                else {
                    Ext.MessageBox.alert("Error", resp.error);
                }
            },
            failure: function (form, action) {                  
                switch (action.failureType) {
                    case Ext.form.Action.CLIENT_INVALID:
                        Ext.Msg.alert('Failure', 'Form fields may not be submitted with invalid values');
                        break;
                    case Ext.form.Action.CONNECT_FAILURE:
                        Ext.Msg.alert('Failure', 'Ajax communication failed');
                        break;
                    case Ext.form.Action.SERVER_INVALID:
                        Ext.Msg.alert('Failure', action.result.error);
                        break;
                }
            }
        });

...谢谢

1 个答案:

答案 0 :(得分:0)

我发现IE7表单有一种非常奇怪的行为。在我的情况下,它“可能”是Dojo的一个问题,但它与IE7的症状相同。我懒得用标准表格验证。

如果我有一个名为 action 的隐藏字段,IE7将完全忽略表单 action 参数并将表单POST到当前页面。基本上它的行为就像没有指定行动一样。

现在我发现这个问题有效,但看到它在IE8中工作,而其他一些东西必须与关于动作参数的IE7代码不同。