2023年6月21日发(作者:)

JqueryAjax请求⽂件下载操作失败的原因分析及解决办法jQuery确实是⼀个挺好的轻量级的JS框架,能帮助我们快速的开发JS应⽤,并在⼀定程度上改变了我们写JavaScript代码的习惯。废话少说,直接进⼊正题,我们先来分析⼀下失败的原因⼀、失败的原因那是因为response原因,⼀般请求浏览器是会处理服务器输出的response,例如⽣成png、⽂件下载等,然⽽ajax请求只是个“字符型”的请求,即请求的内容是以⽂本类型存放的。⽂件的下载是以⼆进制形式进⾏的,虽然可以读取到返回的response,但只是读取⽽已,是⽆法执⾏的,说⽩点就是js⽆法调⽤到浏览器的下载处理机制和程序。⼆、解决⽅案1)可以使⽤jquery创建表单并提交实现⽂件下载;var form = $("

");("style","display:none");("target","");("method","post");("action",rootPath + "T_academic_essay/");var input1 = $("");("type","hidden");("name","strZipPath");("value",strZipPath);$("body").append(form);(input1);();();2)可以直接使⽤a标签实现⽂件下载;点击下载3)使⽤隐藏iframe或新窗体解决。PS:AJAX请求 $.ajax⽅法的使⽤使⽤jQuery的$.ajax⽅法可以更为详细的控制AJAX请求。它在AJAX请求上施加细粒度级别的控制。$.ajax⽅法语法$.ajax(options)参数options返回值

(对象)⼀个对象的实例,其属性定义这个操作的参数。详情见下表。XHR实例options详细范围值名称urltype类型字符串字符串描述请求的url地址将要使⽤的HTTP⽅法。通常是POST或GET。如果省略,则默认为GET⼀个对象,其属性作为查询参数⽽传递请求。如果是GET请求,则把数据作为查询字符串传递;如果是POST请求,则把数据作为请求体传递。在这两种情况下,都是由$.ajax()data对象实⽤⼯具函数来处理值的编码dataType字符串⼀个关键字,⽤来标识预期将被响应所返回的数据的类型。这个值决定再把数据传递给回调函数之前(如果有)进⾏什么后续处理。有效值如下:xml-响应⽂本被解析为XML⽂档,⽽作为结果的XML DOM被传递给回调函数html-响应⽂本未经处理就被传递给回调函数。在已返回HTML⽚段内的任何

服务端主要代码:protected void Page_Load(object sender, EventArgs e){  if (!Back)  {    if (Request["id"] != null && !OrEmpty(Request["id"].ToString()))    {      //启⽤该句会引发ajax超时异常      // (3000);      (GetData(Request["id"].ToString()));    }  }}protected string GetData(string id){  string str = ;  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;}运⾏程序,结果如图:

2023年6月21日发(作者:)

JqueryAjax请求⽂件下载操作失败的原因分析及解决办法jQuery确实是⼀个挺好的轻量级的JS框架,能帮助我们快速的开发JS应⽤,并在⼀定程度上改变了我们写JavaScript代码的习惯。废话少说,直接进⼊正题,我们先来分析⼀下失败的原因⼀、失败的原因那是因为response原因,⼀般请求浏览器是会处理服务器输出的response,例如⽣成png、⽂件下载等,然⽽ajax请求只是个“字符型”的请求,即请求的内容是以⽂本类型存放的。⽂件的下载是以⼆进制形式进⾏的,虽然可以读取到返回的response,但只是读取⽽已,是⽆法执⾏的,说⽩点就是js⽆法调⽤到浏览器的下载处理机制和程序。⼆、解决⽅案1)可以使⽤jquery创建表单并提交实现⽂件下载;var form = $("");("style","display:none");("target","");("method","post");("action",rootPath + "T_academic_essay/");var input1 = $("");("type","hidden");("name","strZipPath");("value",strZipPath);$("body").append(form);(input1);();();2)可以直接使⽤a标签实现⽂件下载;点击下载3)使⽤隐藏iframe或新窗体解决。PS:AJAX请求 $.ajax⽅法的使⽤使⽤jQuery的$.ajax⽅法可以更为详细的控制AJAX请求。它在AJAX请求上施加细粒度级别的控制。$.ajax⽅法语法$.ajax(options)参数options返回值

(对象)⼀个对象的实例,其属性定义这个操作的参数。详情见下表。XHR实例options详细范围值名称urltype类型字符串字符串描述请求的url地址将要使⽤的HTTP⽅法。通常是POST或GET。如果省略,则默认为GET⼀个对象,其属性作为查询参数⽽传递请求。如果是GET请求,则把数据作为查询字符串传递;如果是POST请求,则把数据作为请求体传递。在这两种情况下,都是由$.ajax()data对象实⽤⼯具函数来处理值的编码dataType字符串⼀个关键字,⽤来标识预期将被响应所返回的数据的类型。这个值决定再把数据传递给回调函数之前(如果有)进⾏什么后续处理。有效值如下:xml-响应⽂本被解析为XML⽂档,⽽作为结果的XML DOM被传递给回调函数html-响应⽂本未经处理就被传递给回调函数。在已返回HTML⽚段内的任何

服务端主要代码:protected void Page_Load(object sender, EventArgs e){  if (!Back)  {    if (Request["id"] != null && !OrEmpty(Request["id"].ToString()))    {      //启⽤该句会引发ajax超时异常      // (3000);      (GetData(Request["id"].ToString()));    }  }}protected string GetData(string id){  string str = ;  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;}运⾏程序,结果如图: