我有一个使用'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;
}
}
});
...谢谢
答案 0 :(得分:0)
我发现IE7表单有一种非常奇怪的行为。在我的情况下,它“可能”是Dojo的一个问题,但它与IE7的症状相同。我懒得用标准表格验证。
如果我有一个名为 action 的隐藏字段,IE7将完全忽略表单 action 参数并将表单POST到当前页面。基本上它的行为就像没有指定行动一样。
现在我发现这个问题有效,但看到它在IE8中工作,而其他一些东西必须与关于动作参数的IE7代码不同。