【问题标题】:Showing response error text when requesting a blob type请求 blob 类型时显示响应错误文本
【发布时间】:2025-11-30 06:50:01
【问题描述】:

我已将“responseType”设置为“blob”的 XMLHttpRequest 设置为 php 脚本,我是否可以返回多种类型的响应?如果脚本可以成功运行,则以“contentType/application/zip”响应,但如果脚本失败,则以“字符串”(错误文本)响应。我尝试在我的 php 脚本中响应一个字符串 但是,在我的 javascript 中,我设置了 XHR.responseType = 'blob'。

在 PHP 中

if(someThingWrong)
{
echo "Archive not found"; //Repsonse is DOMString
header("HTTP/1.1 404 Not Found"); 
exit;
}
else
{
header("Content-type: application/zip"); //Response is octe-Stream or zip
header("Content-Disposition:  attachment; filename=\"" . basename($newZipFile) . "\"" );
readfile($newZipFile);  
}

在 JavaScript 中

XHR.open("POST", "anycode.php");
XHR.responseType = "blob";

当我尝试访问 xhr.ResponseText 时,它显示“未定义”。

    if(XHR.status == 404) 
    {alert(XHR.ResponseText);}

非常感谢任何帮助。

【问题讨论】:

  • 它的responseText 和一个共同的r

标签: php xmlhttprequest


【解决方案1】:

您可以使用 FileReader 对象以文本形式获取响应。

if(XHR.status == 404){ 
    var fr = new FileReader();
    fr.onload = function(e){
        alert(e.target.result);
    }
    fr.readAsText(XHR.response);
}

【讨论】: