javascript - Ajax - 了解文件下载是否从服务器正确发送

标签 javascript ajax extjs

我有一个 extjs ajax 函数,它将表单发送到服务器,服务器返回一个要下载的文件,其中包含正确的 Content-Disposition ="attachment; filename='test.zip'" header 。可以使用浏览器的正常文件下载窗口下载该文件。但是,ajax请求的成功回调函数没有被触发,ajax处于pending状态,无限期等待响应。

有没有办法告诉ajax函数文件是否从服务器正确发送?

  exportLayer = function(node_id){
    Ext.Ajax.request({
      method: "GET",
      form: "exportForm",
      url: "/basqui/layer/shapefile/export/" + node_id + "/",
      success: function(r){
                  html = Ext.decode(r.responseText).html
                  Ext.get('pageContent').update(html);
                  },
    });
  }

最佳答案

设置Ext.Ajax.requestbinary配置属性,并在您将得到的响应中 responseBytes 属性内的二进制数据。

例如加载 jpeg 图像:

Ext.Ajax.request({
      url: "/path/to/image/test.jpg",
      success: function(xhr) {
          var b64encoded = btoa(String.fromCharCode.apply(null, xhr.responseBytes));

          var img = Ext.create('Ext.Img', {
              src: 'data:application/jpeg;base64,' + b64encoded
          });
          // add image somewhere
          ...                
      }
 });

关于javascript - Ajax - 了解文件下载是否从服务器正确发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24577666/

相关文章:

javascript - 如何在循环中添加带有局部变量的事件处理程序

javascript - onsubmit 影响特定行的类

javascript - ExtJS - 语法错误 : missing ) in parenthetical

javascript - 使用 ExtJS 更新另一个窗口中的事件的一个窗口的内容

ExtJS。使网格宽度适合面板

javascript - isPrototypeOf() 在 JavaScript 中处理继承时的用法

javascript - if/else 条件正在杀死我的函数

javascript - Leaflet AJAX - 调用properties.description

c# - 方法上的 Webapi 参数为空

javascript - d3.js:轴上每个刻度的双行文本?