jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写JavaScript代码的习惯,本文重点给大家介绍Jquery Ajax请求文件下载操作失败的原因分析及解决办法,对ajax请求失败的原因分析感兴趣的朋友一起学习把
jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写JavaScript代码的习惯。
废话少说,直接进入正题,我们先来分析一下失败的原因
一、失败的原因
那是因为response原因,一般请求浏览器是会处理服务器输出的response,例如生成png、文件下载等,然而ajax请求只是个“字符型”的请求,即请求的内容是以文本类型存放的。文件的下载是以二进制形式进行的,虽然可以读取到返回的response,但只是读取而已,是无法执行的,说白点就是js无法调用到浏览器的下载处理机制和程序。
二、解决方案
1)可以使用jquery创建表单并提交实现文件下载;
var form = $("<form>"); form.attr("style","display:none"); form.attr("target",""); form.attr("method","post"); form.attr("action",rootPath + "T_academic_essay/DownloadZipFile.do"); var input1 = $("<input>"); 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片段内的任何 作者最新文章
最新问题
使用 Javascript / Jquery 提交表单且不带按钮
我试图通过调用JavaScript函数并使用JQUERY/PHP执行表单来提交没有按钮的表单。我希望表单在后端静默执行,而无需重新加载页面。不幸的是,它不断返回JavaScript...
来自于 2024-04-06 14:54:03
0
2
421
如何使用 jquery 检索 HTML 数据表中未选定行的值
我试图获取所有未单击按钮的行的值。例如,当我单击第一行上的按钮时,我想检索没有单击的行的值。vartable=document.getElementById("all_d...
来自于 2024-04-05 09:26:49
0
1
1418
需要一个 jquery 脚本,根据最终用户的当前选择从选择框中移动选定的选项
我有一个HTML页面,最终用户可以通过选择框元素对我们的项目进行排名。请参阅小提琴来观看简单的演示:https://jsfiddle.net/Balkanlii/ghecv1j8/...
来自于 2024-04-04 18:40:04
0
1
3528
我已经通过书签在纯 CSS 中创建了一个元素。它已创建,但不可见
我的代码如下:g=document.createElement('div');g.setAttribute("id","divcontainer&qu...
来自于 2024-04-04 17:27:27
0
1
417
在 Safari/Firefox iOS 上无法发送表单数据
这适用于除iOS上的Safari/Firefox之外的所有平台:jQuery("#gform_1").one('submit',function(event){...
来自于 2024-04-04 12:53:48
0
1
303
相关专题
更多>
热门教程
更多>
|