栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > JavaScript > Ajax教程

Jquery Ajax请求文件下载操作失败的原因分析及解决办法

Ajax教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Jquery Ajax请求文件下载操作失败的原因分析及解决办法

jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写Javascript代码的习惯。

废话少说,直接进入正题,我们先来分析一下失败的原因

一、失败的原因

那是因为response原因,一般请求浏览器是会处理服务器输出的response,例如生成png、文件下载等,然而ajax请求只是个“字符型”的请求,即请求的内容是以文本类型存放的。文件的下载是以二进制形式进行的,虽然可以读取到返回的response,但只是读取而已,是无法执行的,说白点就是js无法调用到浏览器的下载处理机制和程序。

二、解决方案

1)可以使用jquery创建表单并提交实现文件下载;

var form = $("
"); form.attr("style","display:none"); form.attr("target",""); form.attr("method","post"); form.attr("action",rootPath + "T_academic_essay/DownloadZipFile.do"); var input1 = $(""); input1.attr("type","hidden"); input1.attr("name","strZipPath"); input1.attr("value",strZipPath); $("body").append(form); form.append(input1); form.submit(); form.remove();

2)可以直接使用a标签实现文件下载;

点击下载

3)使用隐藏iframe或新窗体解决。

PS:AJAX请求 $.ajax方法的使用

使用jQuery的$.ajax方法可以更为详细的控制AJAX请求。它在AJAX请求上施加细粒度级别的控制。

$.ajax方法语法

$.ajax(options)

参数

 

options

(对象)一个对象的实例,其属性定义这个操作的参数。详情见下表。

返回值

XHR实例

options详细范围值

名称

类型

描述

url

字符串

请求的url地址

type

字符串

将要使用的HTTP方法。通常是POST或GET。如果省略,则默认为GET

data

对象

一个对象,其属性作为查询参数而传递请求。如果是GET请求,则把数据作为查询字符串传递;如果是POST请求,则把数据作为请求体传递。在这两种情况下,都是由$.ajax()实用工具函数来处理值的编码

dataType

字符串

一个关键字,用来标识预期将被响应所返回的数据的类型。这个值决定再把数据传递给回调函数之前(如果有)进行什么后续处理。有效值如下:

xml-响应文本被解析为XML文档,而作为结果的XML DOM被传递给回调函数

html-响应文本未经处理就被传递给回调函数。在已返回HTML片段内的任何

服务端主要代码:

protected void Page_Load(object sender, EventArgs e)
{
  if (!Page.IsPostBack)
  {
    if (Request["id"] != null && !string.IsNullOrEmpty(Request["id"].ToString()))
    {
      //启用该句会引发ajax超时异常
      // System.Threading.Thread.Sleep(3000);
      Response.Write(GetData(Request["id"].ToString()));
    }
  }
}
protected string GetData(string id)
{
  string str = string.Empty;
  switch (id)
  {
    case "1":
      str += "This is Number 1";
      break;
    case "2":
      str += "This is Number 2";
      break;
    case "3":
      str += "This is Number 3";
      break;
    default:
      str += "Warning Other Number!";
      break;
  }
  return str;
}

运行程序,结果如图:

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号