javascript - url 上的 AJAX 返回文件或 JSON 响应?

标签 javascript jquery ajax

我有一个 URL,它返回一个文件,或者在出错时返回一个 JSON 响应。当请求可接受时,它会响应一个文件,并且应提示用户下载(正如人们在这种情况下所期望的那样)。当请求出现问题时,响应是一个 JSON 对象,应通过 javascript 进一步处理。

请求是通过 javascript 发出的(AJAX、在新选项卡中打开、生成的 iframe 等)。我如何通过 JavaScript 处理来自同一 url 的两种响应?

<小时/>

我目前正在修改的策略(尚未开始工作)是:

  1. 生成 iframe
  2. 将表单插入 iframe
  3. 在 iframe 上设置error 事件处理程序
  4. 触发表单提交(我可以控制响应 header ,因此可以使用 Content-Disposition: Attachment 强制保存对话框。)
  5. 如果触发 error 事件处理程序,则废弃 json 响应的 iframe
<小时/>

事实证明,当 iframe 指向触发保存对话框的文件时,iframe 不会触发 error 事件,并且在某些浏览器中不会触发 load 事件.

最佳答案

在点击该 url 之前,在您的情况下,必须存在一些参数,以便您的函数调用提示您返回文件。

编写一个函数,首先检查您为该 url 序列化的数据。如果您正在序列化的数据通过验证,此函数可以调用 url;如果您正在序列化的数据验证失败,则该函数可以返回错误 JSON 响应。

序列化前的数据验证可以在客户端使用 JavaScript 完成,也可以在服务器端完成。理想情况下,您希望在客户端和服务器上都进行验证。

关于javascript - url 上的 AJAX 返回文件或 JSON 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42126587/

相关文章:

javascript - 影响一系列对象

javascript - 将 blob 变量从 php 发送到 javascript

javascript - 使用 fopen() 将文件内容从 PHP 回显到 javascript,file_exists() 不起作用

javascript - AngularJS $scope 对象是什么类型的设计模式?

Javascript 无法在母版页中工作

javascript - 将初始值设置为 Angular 表单组以进行测试

javascript - 在函数内声明变量

jquery - 如何在另一种方法中使用 jQuery 插件初始化选项?

jquery ui _trigger 与触发器

html - Ajax 将表单中的数据发送到 Express js 正文解析器