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

时间:2017-02-09 01:16:52

标签: javascript jquery ajax

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

请求是通过javascript(AJAX,在新标签页中打开,生成iframe,等等)进行的。我如何通过javascript从同一个网址处理这两种回复?

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

  1. 生成iframe
  2. 将表单注入iframe
  3. 在iframe上设置error事件处理程序
  4. 触发表单提交(我可以控制响应标题,以便我可以使用Content-Disposition: attachment强制保存对话框。)
  5. 如果触发了error事件处理程序,请删除json响应的iframe
  6. 当iframe指向触发保存对话框的文件时,iframe不会触发error个事件,并且某些浏览器不会触发load个事件。

1 个答案:

答案 0 :(得分:1)

在点击该网址之前,似乎在您的情况下,必须存在一些参数才能让您的函数调用提示您返回该文件。

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

序列化之前的数据验证可以在客户端使用javascript进行,也可以在服务器端进行。理想情况下,您需要在客户端和服务器上进行验证。