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

时间:2015-10-20 19:08:56

标签: javascript php extjs

搜索网络,了解如何在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()代码中调用成功/失败方法。如何触发成功/失败代码,但是却没有提示下载文件的内容?

0 个答案:

没有答案