$.ajax()方法详解学习

在工作总是会有很多地方用到异步请求,有时候用快捷方法 get/post 或者getJson不能满足自己的需求,所以必须使用底层的ajax来实现异步请求,每次写完下次在用到的时候就记不清楚了,就在这里记录一下,方便自己以后使用和其他人学习! 主要是参考整理JQuery的文档和一些好博客内容!记录一下平常工作最常用的!

大家好,又见面了,我是全栈君。

在工作总是会有很多地方用到异步请求,有时候用快捷方法 get/post 或者getJson不能满足自己的需求,所以必须使用底层的ajax来实现异步请求,每次写完下次在用到的时候就记不清楚了,就在这里记录一下,方便自己以后使用和其他人学习!
主要是参考整理JQuery的文档和一些好博客内容!记录一下平常工作最常用的!
一:首先贴出ajax的例子

 var ajaxRequest=$.ajax({
            url: '${pageContext.request.contextPath}/sysback/productbabyset/saveBabyRelate',//提交的URL
            type: "POST",
            timeout:1000,
            async: false, 
            cache: true,
           // data: $('#mainForm').serialize(), // 要提交的表单,必须使用name属性
            data : {data:data},
            dataType: "json", 
            beforeSend : function(XMLHttpRequest, textStatus){ 
   
                //参数:XMLHttpRequest对象和一个描述成功请求类型的字符串。
            },
            success: function (data, textStatus) { 
   
                //data:由服务器返回,并根据dataType参数进行处理后的数据
                //textStatus:描述状态的字符串。
                doing something...
            },
            error: function(XMLHttpRequest, textStatus, errorThrown){ 
    
                //XMLHttpRequest对象 
                //textStatus的值:null, timeout, error, abort, parsererror 
                //errorThrown的值:收到http出错文本,如 Not Found 或 Internal Server Error
                alert(XMLHttpRequest.readyState + XMLHttpRequest.status + XMLHttpRequest.responseText); //详见参考文章$.ajax的error,complete,success方法 
            }
            complete: function(XMLHttpRequest, textStatus){ 
   
                //XMLHttpRequest对象
                //textStatus的值:success,notmodified,nocontent,error,timeout,abort,parsererror 
                doing something...
                //For Example : request timeout
                if(status=='timeout'){
                 ajaxRequest.abort(); // Do not send ajax request
               }

            }
        }); 

二:讲解其中各个属性详解

  • (1)url : 类型: String

    一个用来包含发送请求的URL字符串。默认为当前页地址。

  • (2)type : 类型String

    HTTP 请求方法 (比如:”POST”, “GET “, “PUT”)。默认为”GET”请求,例如put和delete也可以使用,但仅部分浏览器支持。

  • (3)timeout:类型: Number

    设置请求超时时间(毫秒)。此设置将覆盖 .ajaxSetup()里的全局设置。超时周期开始于 .ajax 访问成功的那个时间点;如果几个其他请求都在进步并且浏览器有没有可用的连接,它有可能在被发送前就超时了。

  • (4)async : async (默认: true) 类型: Boolean

    默认设置下,所有请求均为异步请求(也就是说这是默认设置为 true )。如果需要发送同步请求,请将此选项设置为 false 。跨域请求和 dataType: “jsonp” 请求不支持同步操作。注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。

  • (5)cache : cache (默认: true, dataType为”script”和”jsonp”时默认为false) 类型:
    Boolean

    如果设置为 false ,浏览器将不缓存此页面。注意: 设置cache为 false将在 HEAD和GET请求中正常工作。它的工作原理是在GET请求参数中附加”_={timestamp}”(详见ajax防止缓存)。该参数不是其他请求所必须的,除了在IE8中,当一个POST请求一个已经用GET请求过的URL。

  • (6)data : 类型: PlainObject 或 String 或 Array ,发送到服务器的数据。

    要求为Object或String类型的参数,发送到服务器的数据。如果已经不是字符串,将自动转换为字符串格式。get请求中将附加在url后。防止这种自动转换,可以查看  processData选项。对象必须为key/value格式,例如{foo1:”bar1”,foo2:”bar2”}转换为&foo1=bar1&foo2=bar2。如果是数组,JQuery将自动为不同值对应同一个名称。例如{foo:[“bar1”,”bar2”]}转换为&foo=bar1&foo=bar2。

  • (7)dataType : (default: Intelligent Guess (xml, json, script, or
    html)) 类型: String,从服务器返回你期望的数据类型
    responseXML或responseText,并作为回调函数参数传递。可用的类型如下:
    xml:返回XML文档,可用JQuery处理。
    html:返回纯文本HTML信息;包含的script标签会在插入DOM时执行。
    script:返回纯文本JavaScript代码。不会自动缓存结果。除非设置了cache参数。注意在远程请求时(不在同一个域下),所有post请求都将转为get请求。
    json:返回JSON数据。
    jsonp:JSONP格式。使用SONP形式调用函数时,例如myurl?callback=?,JQuery将自动替换后一个“?”为正确的函数名,以执行回调函数。
    text:返回纯文本字符串

  • (8)beforeSend :类型: Function( jqXHR jqXHR, PlainObject settings )

    请求发送前的回调函数,用来修改请求发送前jqXHR(在jQuery 1.4.x的中,XMLHttpRequest)对象,此功能用来设置自定义 HTTP 头信息,等等。该jqXHR和设置对象作为参数传递。这是一个Ajax事件 。在beforeSend函数中返回false将取消这个请求

  • (9)success : 类型: Function( Object data, String textStatus, jqXHR
    jqXHR )

    请求成功后的回调函数。这个函数传递3个参数:从服务器返回的数据,并根据dataType参数进行处理后的数据,一个描述状态的字符串;还有 jqXHR(在jQuery 1.4.x前为XMLHttpRequest) 对象。

  • (10)error : 类型: Function( jqXHR jqXHR, String textStatus, String
    errorThrown )

    请求失败时调用此函数。有以下三个参数:jqXHR (在 jQuery 1.4.x前为XMLHttpRequest) 对象、描述发生错误类型的一个字符串 和 捕获的异常对象。如果发生了错误,错误信息(第二个参数)除了得到null之外,还可能是”timeout”, “error”, “abort” ,和 “parsererror”。 当一个HTTP错误发生时,errorThrown 接收HTTP状态的文本部分,比如: “Not Found”(没有找到) 或者 “Internal Server Error.”(服务器内部错误)。

  • (11)complete : 类型: Function( jqXHR jqXHR, String textStatus )

    请求完成后回调函数 (请求success 和 error之后均调用)。这个回调函数得到2个参数: jqXHR (在 jQuery 1.4.x中是 XMLHTTPRequest) 对象和一个描述请求状态的字符串(“success”, “notmodified”, “nocontent”,”error”, “timeout”, “abort”, 或者 “parsererror”) 。
    三:拓展快捷方法get/post/getJson 方法

  • (1):get
    jQuery.get( url [, data ] [, success ] [, dataType ] )

$.ajax({
  url: url,
  data: data,
  success: success,
  data类型:dataType
});
$.get("data.php",{data:"data"},function(data){ 
   
      $("#data").html(data);//返回的data是json类型 
   },"json");
  • (2):post
    jQuery.post( url [, data ] [, success ] [, dataType ] )
    相当于:
$.ajax({
  type: "POST",
  url: url,
  data: data,
  success: success,
  dataType: dataType
});
$.post("data.php",{data:"data"},function(data){ 
   
      $("#data").html(data);//返回的data是json类型 
   },"json");
其中get和post的解释说明:
**url**
类型:String
一个包含发送请求的URL字符串.
**data**
类型:PlainObject or String
一个普通对象或字符串,通过请求发送给服务器。
**success**
类型:Function( PlainObject data, String textStatus, jqXHR jqXHR )
当请求成功后执行的回调函数。 如果提供dataType选项,那么这个success选项是必须的, 但你可以使用null或jQuery.noop作为占位符。
**dataType**
类型:String
从服务器返回的预期的数据类型。默认:智能猜测(xml, json, script, text,html)。

– (3):getJson
jQuery.getJSON( url [, data ] [, success(data, textStatus, jqXHR) ] )
相当于:

$.ajax({ dataType: "json", url: url, data: data, success: success });
$.getJSON("data.php",{data:"data"},function(jsonData){ 
   
    $("#data").html(jsonData.id);}//无需设置,直接获取的数据类型为json
);

四:参考文章
1:$.ajax方法详解
2:$.ajax的error,complete,success方法
3:jQuery.ajax 文档

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/121237.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • windows 设置定时锁屏

    windows 设置定时锁屏设置间隔指定时间电脑自动锁屏CreateTime–2017年7月3日10:16:14Author:Marydon参考地址:电脑爱好者杂志举例:实现每间隔45分钟,电脑自动锁屏实现思路:  第一步:编写锁屏命令;  第二步:制定计划。实践:  1.编写锁屏命令    新建一个txt文件,重命名为:lockScreen(名字随意)–>打开该文件添…

    2022年7月21日
  • TypeError: argument of type ‘int‘ is not iterable「建议收藏」

    TypeError: argument of type ‘int‘ is not iterable「建议收藏」TypeError:argumentoftype’int’isnotiterableTraceback(mostrecentcalllast):File"C:/Users/lenovo/PycharmProjects/DoubleU/TestCase/test.py",line131,in<module>Select(driver.find_…

    2022年10月29日
  • cocos2d基础篇笔记四

    cocos2d基础篇笔记四

    2021年12月5日
  • QT3D场景的快速绘制

    QT3D场景的快速绘制    QT3D场景提供了一种快速设置3D场景的一种方式,用户凭借着封装好的实体可以快速的在顶层实体(画布)当中增加各种各样的实体,并且通过3DMax软件构造的OBJ文件与QT3D实现信息交互可以的帮助用户摆脱OpenGL的用代码绘制图形的繁琐。本人在做这方面的工作时也看了很多来自CSDN的文章,但是直接将封装好的3D实体放入画布的例子有点少(是不是大家觉得太简单了?),所以作为一个QT3D建模…

    2022年6月4日
  • 半监督学习之MixMatch

    半监督学习之MixMatch半监督学习之MixMatchMixMatchUnsupervisedDataAugmentationforConsistencyTraining半监督深度学习训练和实现小TricksMixMatch:AHolisticApproachtoSemi-SupervisedLearning1.解读超强半监督学习MixMatch此方法仅用少量的标记数据,就使半监督学习的预测精度逼近监督学习。自洽正则化(ConsistencyRegularization)。自洽正则化的

    2022年10月27日
  • javaweb英文文献_关于java的书籍文献

    javaweb英文文献_关于java的书籍文献您所在位置:网站首页>海量文档&nbsp>&nbsp计算机&nbsp>&nbspJavaJAVAWeb外文文献毕业设计.doc10页本文档一共被下载:次,您可全文免费在线阅读后下载本文档。下载提示1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。2.该文档所得收入(下…

    2022年9月26日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号