在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. 移动端Android软键盘遮住输入框解决!

    在使用vue的情况下,在输入框中添加 <textarea class="textarea" @click="isAndroid" :maxlength=& ...

  2. swift -inout关键字

    一般参数仅仅是在函数内可以改变的,当这个函数执行完后变量就会被销毁,不会有机会改变函数以外的变量,那么我们就会产生一个疑问,我们可不可以通过一个函数改变函数外面变量的值呢?答案是肯定的,这时我们就需要 ...

  3. static关键字的功能

    转载:https://blog.csdn.net/guotianqing/article/details/79828100 C语言&C++ 1.局部变量 如果在一个函数内部定义了一个静态变量, ...

  4. 使用express框架和mongoose在MongoDB新增数据

    1.安装 express npm i express --save 2.安装 mongoDB npm i mongodb --save 3.安装mongoose npm i mongoose --sa ...

  5. 详细介绍jQuery.outerWidth() 函数具体用法

    outerWidth()函数用于设置或返回当前匹配元素的外宽度.外宽度默认包括元素的内边距(padding).边框(border),但不包括外边距(margin)部分的宽度.你也可以指定参数为true ...

  6. 学以致用七---Centos7.2+python3.6.2+django2.1.1 --搭建一个网站(补充)

    补充:上一节出现的报错提示 可在settings.py 里,改成 ‘*’  ,这样所有的主机都可以访问了. 打开网页 注意红色框出来的 hello 是和 urls.py里的hello对应 urls.p ...

  7. idea配置github

    一.事先准备 1.安装Git Git下载: http://git-scm.com/downloads 最新版本是2.1.2 git登陆地址:https://github.com/ 2.注册GitHub ...

  8. Redis基于eval的多字段原子增量计算

    目录 目录 1 1. 前言 1 2. 优点 1 3. 方法一:使用struct 2 3.1. 设置初始值(覆盖原有的,如果存在) 2 3.2. 查询k1的值 2 3.3. 设置初始值(覆盖原有的,如果 ...

  9. [HTML5] 颜色选择器的操作[input type='color'....]

    一.点击事件和获取颜色值 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  10. 把sublime text打造成python交互终端(windows和Ubuntu)

    作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7015958.html 把sublime text打造成python交互终端 ...