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

如果请求的响应返回错误状态码,则这个函数被调用。三个实参被传递给这个函数:XHR实例、状态消息字符串(在这种情况下永远为错误状态码)以及XHR实例所返回的异常对象(可选)

 

complete

 

函数

 

请求完成时被调用。两个实参被传递:XHR实例和状态消息字符串(成功状态码或错误状态码)。如果也指定了success或error回调函数,则这个函数在success或error回调函数调用之后被调用

 

beforeSend

 

函数

 

在发起请求之前被调用。这个函数被传递XHR实例,并且可以用来设置自定义的标头或执行其他预请求操作

 

async

 

布尔型

 

如果指定为false,则请求被提交为同步请求。在默认的情况下,请求是异步的

 

processData

 

布尔型

 

如果设置为false,则阻止已传递数据被加工为URL编码格式。默认情况下,数据被加工为URL编码格式(适用于类型为application/x-www-form-urlencoded的请求)

 

ifModified

 

布尔型

 

如果设置为true,则自从上一次请求以来,只有在响应内容没有改变的情况下(根据Last-Modified标头)才允许请求成功。如果省略,则不执行标头检查

 

下面看个例子,尽可能多的用到options中的选项

客户端代码:

<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script src="https://www.jb51.net/Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> <script type="text/javascript"> $().ready(function () {   $('#selectNum').change(function () {     var idValue = $(this).val();     var show = $('#show');     $.ajax({       url: 'Server.aspx',       type: 'POST',       data: { id: idValue },       //调小超时时间会引起异常       timeout: 3000,       //请求成功后触发       success: function (data) { show.append('success invoke!' + data+'<br/>'); },       //请求失败遇到异常触发       error: function (xhr, errorInfo, ex) { show.append('error invoke!errorInfo:' + errorInfo+'<br/>'); },       //完成请求后触发。即在success或error触发后触发       complete: function (xhr, status) { show.append('complete invoke! status:' + status+'<br/>'); },       //发送请求前触发       beforeSend: function (xhr) {       //可以设置自定义标头       xhr.setRequestHeader('Content-Type', 'application/xml;charset=utf-8');       show.append('beforeSend invoke!' +'<br/>');       },       //是否使用异步发送       async: true     })   }); }) </script> </head> <body> <select>   <option value="0">--Select--</option>   <option value="1">1</option>   <option value="2">2</option>   <option value="3">3</option> </select> <div></div> </body> </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; }

运行程序,结果如图:

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

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wfygxy.html