• 简单理解jQuery中$.getJSON、$.get、$.post、$.ajax用法


    简单理解jQuery中$.getJSON、$.get、$.post、$.ajax用法

    转载于:http://www.cnblogs.com/dongsh/p/3235487.html 

      在WEB开发中异步请求方式普遍使用,ajax技术减少程序员的工作量,也提升用户交互体验。AJAX的四种异步请求方式都能实现基本需求,闲话不多说,直接切入正题。

    1.$.getJSON

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

      

    1 $.getJSON(
    2       url,                 //请求URL
    3       [data],           //传参,可选参数
    4       [callback]       //回调函数,可选参数
    5    );            

      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。

      特别注意:$.getJSON是以GET方式提交数据,所以不能提交过大的数据量,可选$.post。至于如何修改为可用POST方式提交或者扩大GET提交数据量的问题,没有深入研究。

    复制代码
     1 //——项目中的实际案例
     2 function changeAnswerShow(id){
     3     $.getJSON(
     4             "/legalconsult/admin/changeshowanswer",{id:id},    //URL和参数
     5             function(data){
     6              if(data.error==0){                    //回调函数,与后台交互
     7                 showSuccessMessage("操作成功,正在刷新。。。。");
     8                 setTimeout("window.location.reload()",2200);
     9                 var i=$("td.show"+id+" a i" );
    10                 if(i.hasClass("splashy-gem_okay")){
    11                     i.removeClass("splashy-gem_okay").addClass("splashy-gem_remove");
    12                 }else{
    13                    i.removeClass("splashy-gem_remove").addClass("splashy-gem_okay");
    14                 }
    15                 return true;
    16              }else{
    17                 showErrorMessage(data.error);
    18                 return false;
    19              }
    20            }
    21        );
    22 }
    复制代码

      2.$.get

      $.get是以GET方式实现AJAX请求,在提交短数据时可用。但我基本不常用,因为$.getJSON完全满足功能需要,正如上所说,结构合理、更加安全。即便是为了提交长数据,也不会选用$.get,而是$.post。但还是要了解其 用法:

    1 $.get(
    2      url,
    3      [data],
    4      [ callback]
    5  ;)

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

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

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

    复制代码
     1 //项目案例
     2 $.get(
     3         "/legalconsult/answer/focus",
     4         {id:id},
     5         function(data){
     6             if(data.error==0){
     7                  var su=$("#focus_"+id).text();
     8                  su=parseInt(su);              
     9                  su++;
    10                  $("#focus_"+id).text(su);      //后台操作成功后返回error==0,在这里进行前端操作
    11                  var i=$("#show_"+id);
    12                  var j=$("<span><p class='icon-ok'></p>已赞同</span>");
    13                  i.empty().append(j);
    14                  return true;
    15             }else{
    16                 showError(data.error);      //调用其它函数,读者可忽视
    17                 return false;
    18             }
    19         }
    20 );
    复制代码

    3.$.post

      我在提交评论或者留言之类的数据时经常使用$.post,不废话上代码:

    1 $.post(
    2     url,
    3     [data],
    4     [callback],
    5     [type]
    6 );

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

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

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

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

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

    复制代码
     1 //实际项目案例
     2 function changeMarkShow(id){
     3      $.post(
     4              "/legalconsult/admin/markquestion",{id:id},
     5              function(data){
     6                  if(data.error==0){
     7                      showSuccessMessage("操作成功,正在刷新。。。。");
     8                      setTimeout("window.location.reload()",2200);
     9                      var i=$("td.markshow"+id+" a i" );
    10                      if(i.hasClass("splashy-star_full")){
    11                          i.removeClass("splashy-star_full").addClass("splashy-gem_empty");
    12                      }else{
    13                          i.removeClass("splashy-gem_empty").addClass("splashy-gem_full");
    14                      }
    15                      return true;
    16                      }else{
    17                          showErrorMessage(data.error);
    18                          return false;
    19                      }
    20                 },
    21             "json"                                             //声明数据格式
    22              );
    23 }
    复制代码

    4.$.ajax

      $.ajax是一种常用的普通封装异步方式。

    1 $.ajax(options);

      options是一个object类型,它指明了本次ajax调用的具体参数。呈上代码:

    复制代码
     1 //示例
     2 .ajax(
     3             url: "/legalconsult/layer/update-info",
     4             datatype:"json",
     5             type:'post',
     6             beforeSend:function(){
     7                             //函数体,数据发送前执行。
     8                      }
     9                       success:function(){
    10                             //函数体,数据发送成功回调
    11                           }
    12                       error: function(){
    13                             //函数体,数据发送错误时执行
    14                             }
    15          );    
    复制代码

    以上是我在做项目时遇到出问题时,通过查资料、测试得出的可行性方法;希望对你有所帮助~~

    参考资料:

    1.Http同步和异步请求区别  http://kevinpeng.iteye.com/blog/677797

    2.W3school http://www.w3school.com.cn/ajax/

    3.深入理解jQuery中$.get、$.post、$.getJSON和$.ajax的用法

    http://www.itivy.com/jquery/archive/2011/7/6/jquery-get-post-getjson-ajax.html

     
     
  • 相关阅读:
    鬼斧神工:求n维球的体积
    一个双曲函数的积分
    复杂的对数积分(八)
    一个有意思的对数积分的一般形式
    Logarithmic-Trigonometric积分系列(二)
    Logarithmic-Trigonometric积分系列(一)
    Some series and integrals involving the Riemann zeta function binomial coefficients and the harmonic numbers
    Euler Sums系列(六)
    Euler Sums系列(五)
    级数欣赏
  • 原文地址:https://www.cnblogs.com/Willie-WangLiang/p/7428244.html
Copyright © 2020-2023  润新知