美文网首页
2019-11-08

2019-11-08

作者: xuhuadage | 来源:发表于2019-11-08 12:18 被阅读0次

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

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

1.$.getJSON

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

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">1 $.getJSON( 2 url, //请求URL
3 [data], //传参,可选参数
4 [callback] //回调函数,可选参数
5  ); </pre>

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

[ 复制代码

](javascript:void(0); "复制代码")

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"> 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 }</pre>

[ 复制代码

](javascript:void(0); "复制代码")

2.$.get

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

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">1 $.get( 2 url, 3 [data], 4 [ callback] 5 ;)</pre>

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

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

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

[ 复制代码

](javascript:void(0); "复制代码")

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"> 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 );</pre>

[ 复制代码

](javascript:void(0); "复制代码")

3.$.post

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

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">1 $.post( 2 url, 3 [data], 4 [callback], 5 [type] 6 );</pre>

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

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

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

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

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

[ 复制代码

](javascript:void(0); "复制代码")

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"> 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 }</pre>

[ 复制代码

](javascript:void(0); "复制代码")

4.$.ajax

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

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">1 $.ajax(options);</pre>

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

[ 复制代码

](javascript:void(0); "复制代码")

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"> 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 ); </pre>

[ 复制代码

](javascript:void(0); "复制代码")

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

相关文章

  • ❄️立冬摘秋煮诗句

    2019-11-08

  • 小帅的ScalersTalk第五轮《新概念》朗读持续力训练[Da

    练习材料 [Day 1869 2019-11-08] Lesson29 Taxi! CaptainBenFawce...

  • 2019-11-09

    2019-11-08 【日精进打卡第 594 天 【知~学习】 《六项精进》大纲 4 遍共 2232 遍 《大学》...

  • MySQL数据表类型

    MySQL数据表类型 作者:vwFisher时间:2019-11-08 目录 1 概述 2 数据表类型2.1 My...

  • 文先森的日常--剩38天

    日精进打卡第451天 姓名:李文杰 (四爷); 公司:中国太平人寿; 日期:2019-11-08 【知~学习】 《...

  • 2019-11-14

    “炸鸡”、“警察”韩国票房冠军《极限职业》,让你轻松加愉悦 飘飞的落雨2019-11-08 15:07:42 给大...

  • 想你

    晨间日记爱 寻得碧水洗心尘 字数 55 · 阅读 5 2019-11-08 03:18 月上中天 风起深夜 我只想...

  • 2019-11-09

    2019-11-08 日精进打卡 姓名:彭新 宁波蓝天白云供应链管理有限公司 【日精进打卡第565天】 【知~学习...

  • 2019-11-08

    2019-11-08 姓名:符振华(379期 反省三组) 公司:深圳蔚蓝时代商业管理有限公司-上海第一分公司 【日...

  • 2019-11-08

    2019-11-08 打卡人:王素琴 公司:阜阳市豹子头服饰科技有限公司【日精进打卡第553天 【知~学习】 公司...

网友评论

      本文标题:2019-11-08

      本文链接:https://www.haomeiwen.com/subject/zomibctx.html