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

1.$.getJSON

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

  

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

  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提交数据量的问题,没有深入研究。

 //——项目中的实际案例
function changeAnswerShow(id){
$.getJSON(
"/legalconsult/admin/changeshowanswer",{id:id},    //URL和参数
function(data){
if(data.error==0){                    //回调函数,与后台交互
showSuccessMessage("操作成功,正在刷新。。。。");
setTimeout("window.location.reload()",2200);
var i=$("td.show"+id+" a i" );
if(i.hasClass("splashy-gem_okay")){
i.removeClass("splashy-gem_okay").addClass("splashy-gem_remove");
}else{
i.removeClass("splashy-gem_remove").addClass("splashy-gem_okay");
}
return true;
}else{
showErrorMessage(data.error);
return false;
}
}
);
}

  2.$.get

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

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

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

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

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

 //项目案例
$.get(
"/legalconsult/answer/focus",
{id:id},
function(data){
if(data.error==0){
var su=$("#focus_"+id).text();
su=parseInt(su);              
su++;
$("#focus_"+id).text(su);      //后台操作成功后返回error==0,在这里进行前端操作
var i=$("#show_"+id);
var j=$("<span><p class='icon-ok'></p>已赞同</span>");
i.empty().append(j);
return true;
}else{
showError(data.error);      //调用其它函数,读者可忽视
return false;
}
}
);

3.$.post

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

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

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

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

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

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

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

 //实际项目案例
function changeMarkShow(id){
$.post(
"/legalconsult/admin/markquestion",{id:id},
function(data){
if(data.error==0){
showSuccessMessage("操作成功,正在刷新。。。。");
setTimeout("window.location.reload()",2200);
var i=$("td.markshow"+id+" a i" );
if(i.hasClass("splashy-star_full")){
i.removeClass("splashy-star_full").addClass("splashy-gem_empty");
}else{
i.removeClass("splashy-gem_empty").addClass("splashy-gem_full");
}
return true;
}else{
showErrorMessage(data.error);
return false;
}
},
"json" //声明数据格式
);
}

4.$.ajax

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

 $.ajax(options);

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

 //示例
.ajax(
url: "/legalconsult/layer/update-info",
datatype:"json",
type:'post',
beforeSend:function(){
//函数体,数据发送前执行。
}
success:function(){
//函数体,数据发送成功回调
    }
error: function(){
//函数体,数据发送错误时执行
   }
);

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

参考资料:

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

简单理解jQuery中$.getJSON、$.get、$.post、$.ajax用法的更多相关文章

  1. input屏蔽历史记录 ;function($,undefined) 前面的分号是什么用处 JSON 和 JSONP 两兄弟 document.body.scrollTop与document.documentElement.scrollTop兼容 URL中的# 网站性能优化 前端必知的ajax 简单理解同步与异步 那些年,我们被耍过的bug——has

    input屏蔽历史记录   设置input的扩展属性autocomplete 为off即可 ;function($,undefined) 前面的分号是什么用处   ;(function($){$.ex ...

  2. ajax和springmvc的请求响应原理——深入理解jQuery中$.get、$.post、$.getJSON和$.ajax的用法

    1,四大重要部分: 请求链接 post请求和get请求 请求参数形式 响应内容形式 2,从springmvc的controller角度,controller能接收到请求的前提 请求链接必须对应 pos ...

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

    当我们用javascript写ajax程序写得很“开心”的时候,突然有人告诉你有一种东西叫jquery,它会告诉你不直接和HttpRequest是多么的快乐,同时你再也不需要再烦恼纠结的ajax乱码问 ...

  4. 理解jQuery中$.get、$.post、$.getJSON和$.ajax的用法

    ajax的4种方法:$.get.$.post.$getJSON.$ajax. 1.$.get $.get()方法使用GET方式来进行异步请求,它的语法结构为: $.get( url [, data] ...

  5. 关于 Promise 的一些简单理解

    一.ES6 中的 Promise 1.JS 如何解决 异步问题? (1)什么是 同步.异步? 同步指的是 需要等待 前一个处理 完成,才会进行 下一个处理. 异步指的是 不需要等待 前一个处理 完成, ...

  6. 简单理解Struts2中拦截器与过滤器的区别及执行顺序

    简单理解Struts2中拦截器与过滤器的区别及执行顺序 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标 ...

  7. jQuery学习之jQuery Ajax用法详解

    jQuery Ajax在web应用开发中很常用,它主要包括有ajax,get,post,load,getscript等等这几种常用无刷新操作方法,下面我来给各位同学介绍介绍. 我们先从最简单的方法看起 ...

  8. jQuery学习之jQuery Ajax用法详解(转)

    [导读] jQuery Ajax在web应用开发中很常用,它主要包括有ajax,get,post,load,getscript等等这几种常用无刷新操作方法,下面我来给各位同学介绍介绍.我们先从最简单的 ...

  9. jQuery $.post $.ajax用法

    jQuery $.post $.ajax用法 jQuery.post( url, [data], [callback], [type] ) :使用POST方式来进行异步请求 参数: url (Stri ...

随机推荐

  1. git .gitignore未生效

    添加进.gitignore的问题未生效. .gitignore只会忽略在.gitignore编写之后的未跟踪(untrack)文件,而在编写.gitignore之前已经add and commit的文 ...

  2. 爬取数据时解析url时一直报错Caused by: java.net.URISyntaxException: Illegal character in query at index 823替换了所有空格和特殊字符还是无效

    近日在用HttpClient访问抓取汇率时,为了省力,直接采用 String url = "http://api.liqwei.com/currency/?exchange=usd|cny& ...

  3. 创建视图&新建表按照视图结构

    create  view  V_tableTemp as  select a.* from TEMPCLIENT a ,TEMPCLIENTSTUFF b where a.CORNO<>' ...

  4. java编程IO简单回顾和学习

    java编程IO操作必不可少的,很久不玩IO,回顾一下,写了几个小程序,记录一下,方便查阅和学习. 1.给出一个整数数组,将其写入一个文件,再从文件中读出,并按整数大小逆序打印. package co ...

  5. 如果我写一个开源的HIS软件

    HIS也称为医院信息管理系统,如果我要写一个 开源的,会成吗?为什么要这么做?出于对这个行业的担忧及其当前该行业的一些问题的思考.我曾跟两个HIS供应商讨论过这个话题,但可以感受到他们在利益面前,最终 ...

  6. 从kepware定时取web api内容

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  7. iOS中的序列帧动画

    UIImageView对象的有一个animationImages属性,将图片数组赋值给该属性即可.如图: 控制动画的播放方法是:[ ___  startAnimating]; 控制动画的停止方法是:[ ...

  8. HDU 2829 区间DP & 前缀和优化 & 四边形不等式优化

    HDU 2829 区间DP & 前缀和优化 & 四边形不等式优化 n个节点n-1条线性边,炸掉M条边也就是分为m+1个区间 问你各个区间的总策略值最少的炸法 就题目本身而言,中规中矩的 ...

  9. hive 实现类似 contain 包含查询

    如何用hive sql 实现 contain 查询? 需求:判断某个字符串是否在另一个字符串中? 方法: 可以自定义函数,但是用正则匹配regexp更方便 代码如下: 首先,查看regexp正则函数的 ...

  10. [控件]unigui移动端下Unidatepicker时间显示解决方案

    [控件]unigui移动端下Unidatepicker时间显示解决方案 http://tz10000.com/kong-jian-unigui-yi-dong-duan-xia-unidatepick ...