我有一个 URL,它返回一个文件,或者在出错时返回一个 JSON 响应。当请求可接受时,它会响应一个文件,并且应提示用户下载(正如人们在这种情况下所期望的那样)。当请求出现问题时,响应是一个 JSON 对象,应通过 javascript 进一步处理。
请求是通过 javascript 发出的(AJAX、在新选项卡中打开、生成的 iframe 等)。我如何通过 JavaScript 处理来自同一 url 的两种响应?
<小时/>我目前正在修改的策略(尚未开始工作)是:
- 生成 iframe
- 将表单插入 iframe
- 在 iframe 上设置
error
事件处理程序 - 触发表单提交(我可以控制响应 header ,因此可以使用
Content-Disposition: Attachment
强制保存对话框。) - 如果触发
error
事件处理程序,则废弃 json 响应的 iframe
事实证明,当 iframe 指向触发保存对话框的文件时,iframe 不会触发 error
事件,并且在某些浏览器中不会触发 load
事件.
最佳答案
在点击该 url 之前,在您的情况下,必须存在一些参数,以便您的函数调用提示您返回文件。
编写一个函数,首先检查您为该 url 序列化的数据。如果您正在序列化的数据通过验证,此函数可以调用 url;如果您正在序列化的数据验证失败,则该函数可以返回错误 JSON 响应。
序列化前的数据验证可以在客户端使用 JavaScript 完成,也可以在服务器端完成。理想情况下,您希望在客户端和服务器上都进行验证。
关于javascript - url 上的 AJAX 返回文件或 JSON 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42126587/