在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. 51.从首页内容跳转到第二个Tabbar控制器(controller)

    TabBarController: 创建TabBar的控制器 注意:在点击的内容方法页面,添加头文件 #import "TabBarController.h" #import &q ...

  2. ueditor编辑器视频上传不能预览的问题

    ps:来源 https://blog.csdn.net/eadela/article/details/76264168 修改ueditor.all.js文件 ueditor.all.js,17769行 ...

  3. p标签在div中垂直居中,并且div高度随着p标签文字内容的变化而变化

    1.div设置flex布局 div{ display: flex; align-items: center; } 2.div不要设置height,设置min-height

  4. (16)The beauty of what we'll never know

    https://www.ted.com/talks/pico_iyer_the_beauty_of_what_we_ll_never_know/transcript 00:13One hot Octo ...

  5. C++STL 容器比较

    Vector的使用场景:比如软件历史操作记录的存储,我们经常要查看历史记录,比如上一次的记录,上上次的记录,但却不会去删除记录,因为记录是事实的描述. deque的使用场景:比如排队购票系统,对排队者 ...

  6. php 16进制颜色代码转换为rgba,rgb格式

    <?php $rgb = hex2rgba('#FFFFFF', false, true); echo 'rgb: '.$rgb[0].','; echo $rgb[1].','; echo $ ...

  7. 富文本粘贴word文档内容图片处理

    公司做的项目要用到文本上传功能. 网上找了很久,大部分都有一些不成熟的问题,终于让我找到了一个成熟的项目. 下面就来看看: 1.打开工程: 对于文档的上传我们需要知道这个项目是否符合我们的初衷. 运行 ...

  8. slice()

    提取字符串中的一部分,并返回这个新的字符串 str.slice(beginSlice[, endSlice]) 参数 beginSlice 从该索引(以 0 为基数)处开始提取原字符串中的字符.如果值 ...

  9. java基础-day22

    第11天  多线程 今日内容介绍 u  多线程概述 u  线程实现 u  多线程安全问题产生 & 解决方案 第1章    多线程概述 学习多线程之前,我们先要了解几个关于多线程有关的概念. A ...

  10. vue.js入门学习

    可以用淘宝npm镜像 然后安装 然后初始化项目: Watch就是一个监听 v-if是如果为false就根本不在页面存在这个元素 v-show是通过display:none来控制这个元素的显示和隐藏 r ...