搜索网络,了解如何在extjs中使用standardsubmit进行下载时将下载数据与成功/失败数据分开,并且无法找到有关如何执行此操作的具体信息。
例如,我有一个隐藏的表单,我用来强行下载:
var hiddenForm = Ext.create('Ext.form.FormPanel', {
standardSubmit: true,
height: 0,
width: 0,
hidden: true
});
hiddenForm.getForm().submit({
url: 'downloadtxt.php',
method: 'POST',
success: function(form, action) {
console.log('success');
},
failure: function(form, action) {
console.log('failure');
}
});
在PHP中的服务器上我有这段代码:
$file_name = "test.txt";
$file_data = "The text to save in the file";
header("Content-Type: " . "text/plain");
header("Content-Length: " . strlen($file_data));
header("Content-Disposition: attachment; filename=\"" . $file_name . "\"");
$result["success"] = true;
$result["errors"] = array();
$result["data"] = $file_data;
echo json_encode($result);
在这种情况下,$ result数组的全部内容都会被放入下载文件中(实际上会破坏内容,另外成功/失败方法永远不会在submit()代码中调用。现在,如果我更改了PHP服务器代码:
$file_name = "test.txt";
$file_data = "The text to save in the file";
header("Content-Type: " . "text/plain");
header("Content-Length: " . strlen($file_data));
header("Content-Disposition: attachment; filename=\"" . $file_name . "\"");
echo $file_data;
然后下载的文件包含我所期望的内容(“要保存在文件中的文本”),但仍然不会在submit()代码中调用成功/失败方法。如何触发成功/失败代码,但是却没有提示下载文件的内容?