【发布时间】:2016-12-12 15:48:59
【问题描述】:
我有一个简单的 jQuery 代码,当用户单击按钮时,它会要求 PHP 服务器下载文件:
// Build a temp form
var jRestr = {sFitxer: sFitxer, bDownload: true};
var $form = $('<form></form>').attr('action', getMBD_URL()).attr('method', 'post');
// Add the one key/value
$form.append($("<input></input>").attr('type', 'hidden').attr('name', 'Consulta').attr('value', 'downLoadFile.php'));
$form.append($("<input></input>").attr('type', 'hidden').attr('name', 'UserName').attr('value', sessionStorage.usuari));
$form.append($("<input></input>").attr('type', 'hidden').attr('name', 'Token').attr('value', sessionStorage.token));
$form.append($("<input></input>").attr('type', 'hidden').attr('name', 'sFormat').attr('value', 'META'));
$form.append($("<input></input>").attr('type', 'hidden').attr('name', 'Modul').attr('value', sModul_glb));
$form.append($("<input></input>").attr('type', 'hidden').attr('name', 'sjRestr').attr('value', JSON.stringify(jRestr)));
//send request
$form.appendTo('body').submit().remove();
这就像一个魅力,但如果服务器遇到一些问题(找不到文件、权限被拒绝等),它会返回一个带有错误信息的 JSON,而不是请求的文件。
如何捕捉并以用户可读的格式显示?
我对可以使用哪种技术感到困惑,因为如果我使用 AJAX 调用,我不知道如何下载文件,如果我使用 HTML 提交调用,我将失去响应控制。
【问题讨论】:
-
如果出现服务器错误,用户会被重定向到丑陋的(响应输出)页面?
-
@seak 你能告诉我们你的错误响应是什么样的吗?
-
是的,同意@zayn-ali ...需要你的ajax代码的其余部分来显示你如何处理它的其余部分。可能最好在您的 php 代码中启动检查并发出一个
return被您的 ajax 成功/捕获。 -
这是服务器出错时的响应:
{"sError":"File '2014-01-02 18.40.20.jpg' not found","lRedirectLogin":false}
标签: javascript php jquery error-handling download