zoukankan      html  css  js  c++  java
  • $.ajax()所有参数详解

    原文:https://www.cnblogs.com/everest33Tong/p/6159700.html

    【一】$.ajax()所有参数详解

    url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址。

    type: 要求为String类型的参数,请求方式(post或get)默认为get。注意其他http请求方法,例如put和delete也可以使用,但仅部分浏览器支持。

    timeout: 要求为Number类型的参数,设置请求超时时间(毫秒)。此设置将覆盖$.ajaxSetup()方法的全局设置。

    async:要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为false。注意,同步请求将锁住浏览器,用户其他操作必须等待请求完成才可以执行。

    cache:要求为Boolean类型的参数,默认为true(当dataType为script时,默认为false)。设置为false将不会从浏览器缓存中加载请求信息。

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

    dataType: 要求为String类型的参数,预期服务器返回的数据类型。如果不指定,JQuery将自动根据http包mime信息返回responseXML或responseText,并作为回调函数参数传递。

              可用的类型如下:

              xml:返回XML文档,可用JQuery处理。

              html:返回纯文本HTML信息;包含的script标签会在插入DOM时执行。

              script:返回纯文本JavaScript代码。不会自动缓存结果。除非设置了cache参数。注意在远程请求时(不在同一个域下),所有post请求都将转为get请求。

              json:返回JSON数据。

              jsonp:JSONP格式。使用SONP形式调用函数时,例如myurl?callback=?,JQuery将自动替换后一个 “?”为正确的函数名,以执行回调函数。

              text:返回纯文本字符串。

    beforeSend:要求为Function类型的参数,发送请求前可以修改XMLHttpRequest对象的函数,例如添加自定义 HTTP头。在beforeSend中如果返回false可以取消本次ajax请求。XMLHttpRequest对象是惟一的参数。

                function(XMLHttpRequest){

                   this;   //调用本次ajax请求时传递的options参数

                }

    complete:complete无论后台返回200(成功)还是非200(失败)都会回调。

         要求为Function类型的参数,请求完成后调用的回调函数(请求成功或失败时均调用,先调用成功或失败后的回调函数,再调用complete的回调函数)。

              参数:XMLHttpRequest对象和一个描述成功请求类型的字符串。

              例一:

        function(XMLHttpRequest, textStatus){

                   this;    //调用本次ajax请求时传递的options参数

               }

      例二:complete : function(XMLHttpRequest,status){ //请求完成后最终执行参数
          if(status=='timeout'){//超时,status还有success,error等值的情况
             ajaxTimeoutTest.abort();
             alert("超时");
          }
        }

    success:success是在后台返回200状态码的时候回调的!

       要求为Function类型的参数,请求成功后调用的回调函数,有两个参数。

             (1)由服务器返回,并根据dataType参数进行处理后的数据。

             (2)描述状态的字符串。

             function(data, textStatus){

                //data可能是xmlDoc、jsonObj、html、text等等

                this;  //调用本次ajax请求时传递的options参数

    error:error是在后台返回状态码为非200的时候回调的。

        要求为Function类型的参数,请求失败时被调用的函数。该函数有3个参数,即XMLHttpRequest对象、错误信息、捕获的错误对象(可选)。

                   ajax事件函数如下:

             function(XMLHttpRequest, textStatus, errorThrown){//通常情况下textStatus和errorThrown只有其中一个包含信息

                this;   //调用本次ajax请求时传递的options参数

           }

    contentType:要求为String类型的参数,当发送信息至服务器时,内容编码类型默认为"application/x-www-form-urlencoded"。该默认值适合大多数应用场合。

    dataFilter:要求为Function类型的参数,给Ajax返回的原始数据进行预处理的函数。 提供data和type两个参数。data是Ajax返回的原始数据,type是调用jQuery.ajax时提供的dataType参数。函数返回的值将由jQuery进一步处理。

                function(data, type){

                    //返回处理后的数据

                    return data;

                }

    global:要求为Boolean类型的参数,默认为true。表示是否触发全局ajax事件。设置为false将不会触发全局 ajax事件,ajaxStart或ajaxStop可用于控制各种ajax事件。

    ifModified:要求为Boolean类型的参数,默认为false。仅在服务器数据改变时获取新数据。服务器数据改变判断的依据是Last-Modified头信息。默认值是false,即忽略头信息。

    jsonp:要求为String类型的参数,在一个jsonp请求中重写回调函数的名字。该值用来替代在"callback=?"这种GET或POST请求中URL参数里的"callback"部分,例如

           {jsonp:'onJsonPLoad'}会导致将"onJsonPLoad=?"传给服务器。

    username:要求为String类型的参数,用于响应HTTP访问认证请求的用户名。

    password:要求为String类型的参数,用于响应HTTP访问认证请求的密码。

    processData:要求为Boolean类型的参数,默认为true。默认情况下,发送的数据将被转换为对象(从技术角度来讲并非字符串)以配合默认内容类型"application/x-www-form-urlencoded"。如果要发送DOM树信息或者其他不希望转换的信息,请设置为false。

    scriptCharset:要求为String类型的参数,只有当请求时dataType为"jsonp"或者"script",并且type是GET时才会用于强制修改字符集(charset)。通常在本地和远程的内容编码不同时使用。

    案例代码:

    $(function(){
     
        $('#send').click(function(){
     
             $.ajax({
     
                 type: "GET",
     
                 url: "test.json",
     
                 data: {username:$("#username").val(), content:$("#content").val()},
     
                 dataType: "json",
     
                 success: function(data){
     
                             $('#resText').empty();   //清空resText里面的所有内容
     
                             var html = '';
     
                             $.each(data, function(commentIndex, comment){
     
                                   html += '<div class="comment"><h6>' + comment['username']
     
                                             + ':</h6><p class="para"' + comment['content']
     
                                             + '</p></div>';
     
                             });
     
                             $('#resText').html(html);
     
                          }
     
             });
     
        });
     
    });
    

      


     【二】$.get(),$.post(),$.getJSON(),$.ajax();详解

    本文重点是来讲讲jQuery中调用ajax的4种方法:$.get、$.post、$getJSON、$ajax。如果读者没有javascript和jquery的知识,或者没有ajax的概念,那么请先去问问google老大,再来读本文。

    1、$.get

    $.get()方法使用GET方式来进行异步请求,它的语法结构为:

    $.get( url [, data] [, callback] )

    解释一下这个函数的各个参数:

    url:string类型,ajax请求的地址。

    data:可选参数,object类型,发送至服务器的key/value数据会作为QueryString附加到请求URL中。

    callback:可选参数,function类型,当ajax返回成功时自动调用该函数。

    最后写一个$.get()的实例供大家参考:

    $.get(
        "submit.aspx",{
            id:     '123',
            name:   '青藤园',
        },function(data,state){
            //这里显示从服务器返回的数据
            alert(data);
            //这里显示返回的状态
            alert(state);
        }
    )
    

      

    2、$.post()

    $.post()方法使用POST方式来进行异步请求,它的语法结构为:

    $.post(url,[data],[callback],[type])

    这个方法和$.get()用法差不多,唯独多了一个type参数,那么这里就只介绍type参数吧,其他的参考上面$.get()的。

    type:type为请求的数据类型,可以是html,xml,json等类型,如果我们设置这个参数为:json,那么返回的格式则是json格式的,如果没有设置,就和$.get()返回的格式一样,都是字符串的。

    【解释】意思是当设置了type为"json"时,(首先php文件输出必须是json字符串格式数据),返回的数据经过了JSON.parse()处理了,直接就是json对象格式。不设置type时,(php输出是json字符串格式),返回的数据是字符串,经过JSON.parse()处理才能变为json(对象)格式。

    最后写一个$.post()的实例供大家参考:

    $.post(
        "submit.aspx",{
            id:     '123',
            name:   '青藤园',
        },function(data,state){
            //这里显示从服务器返回的数据
            alert(data);
            //这里显示返回的状态
            alert(state);
        },
        "json"
    )
    

      

    3、$.getJSON()

    $.getJSON()是专门为ajax获取json数据而设置的,并且支持跨域调用,其语法的格式为:

    getJSON(url,[data],[callback])  【返回的数据也是经过JSON.parse()处理过了】

    url:string类型, 发送请求地址  data :可选参数, 待发送 Key/value 参数 ,同get,post类型的data callback :可选参数,载入成功时回调函数,同get,post类型的callback

    JSON 是一种理想的数据传输格式,它能够很好的融合与JavaScript或其他宿主语言,并且可以被JS直接使用。使用JSON相比传统的通过 GET、POST直接发送“裸体”数据,在结构上更为合理,也更为安全。至于jQuery的getJSON()函数,只是设置了JSON参数的 ajax()函数的一个简化版本。这个函数也是可以跨域使用的,相比get()、post()有一定优势。另外这个函数可以通过把请求url写 成"myurl?callback=X"这种格式,让程序执行回调函数X。

    4、$.ajax()

    $.ajax()是jquery中通用的一个ajax封装,其语法的格式为:

    $.ajax(options)

    其中options是一个object类型,它指明了本次ajax调用的具体参数,这里我把最常用的几个参数附上

    $.ajax({
            url: 'submit.aspx',
            datatype: "json",
            type: 'post',
            success: function (e) {   //成功后回调
                alert(e);
            },
            error: function(e){    //失败后回调
                alert(e);
            },
            beforeSend: function(){  /发送请求前调用,可以放一些"正在加载"之类额话
                alert("正在加载");
            }
    })
    

      

  • 相关阅读:
    docker容器的应用
    KVM虚拟机迁移
    centos6.5虚拟机快照技术
    centos6.5网络虚拟化技术
    centos6.5制作OpenStack云平台Windows7镜像
    centos6.5远程桌面连接(VNCSPice)
    centos6.5kvm虚拟化技术
    centos7安装Jenkins及其卸载(yum和rpm安装)
    CentOS 7安装JDK
    [leetcode]Reverse Nodes in k-Group
  • 原文地址:https://www.cnblogs.com/gcgc/p/9829596.html
Copyright © 2011-2022 走看看