Javascript 下载后extjs隐藏表单未触发成功

Javascript 下载后extjs隐藏表单未触发成功,javascript,php,extjs,Javascript,Php,Extjs,在使用extjs中的standardsubmit进行下载时,搜索网络以了解如何将下载数据与成功/失败数据分开,但找不到任何关于如何做到这一点的具体信息 例如,我有一个用于强制下载的隐藏表单: var hiddenForm = Ext.create('Ext.form.FormPanel', { standardSubmit: true, height: 0, width: 0, hidden: true }); hiddenForm.getForm().subm

在使用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数组的全部内容被放入下载文件中,有效地对内容进行了错误处理,此外,success/fail方法在提交代码中永远不会被调用。现在,如果我将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;

然后,下载的文件包含我希望保存在文件中的文本,但是提交代码中仍然没有调用success/fail方法。如何触发成功/失败代码,但又不干扰下载文件的内容?

您是否返回了success:true或success:false?是的,正如第一个示例所示,返回了success:true