jQuery Ajax()方法使用指南


Posted in Javascript onNovember 19, 2014

 jQuery提供了简单而强大的选择器功能,同时对Ajax操作也给出了很好的支持。在Ajax方面,jQuery除了提供底层的jQuery.ajax()方法外,也提供了下面的简单方法:

(1)       jQuery.get(url, [data], [callback], [type])

(2)       jQuery.getJSON(url, [data], [callback])

(3)       jQuery.getScript(url, [callback])

(4)       jQuery.post(url, [data], [callback], [type])

由于jQuery.ajax()功能比较强大,可配置的参数比较多,现在主要对这个方法的注意事项进行总结。

1.       jQuery.ajax()默认是以异步的方式请求的,如果需要同步,使用参数async为false。因为有些应用必须同步请求数据的。例如,某些Flash与JS交互应用中,请求一个JS函数需要马上得到返回数据。此时,必须采用同步的Ajax调用方式。

2.       Ajax如果是Get请求,返回的数据一般会被浏览器缓存,如果不想被缓存,可以设置cache参数为false;或者发送请求是带上时间戳,这样浏览器会认为是新的请求,而重新从服务器加载数据。当然,如果是POST发送的请求则不会被缓存。

3.       dataType:预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息返回 responseXML 或 responseText,并作为回调函数参数传递,可用值:

(1)"xml": 返回 XML 文档,可用 jQuery 处理。

(2)"html": 返回纯文本 HTML 信息;包含的script标签会在插入dom时执行。

(3)"script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了"cache"参数。'''注意:'''在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。(因为将使用DOM的script标签来加载)

(4)"json": 返回 JSON 数据 。

(5)"jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。

(6)"text": 返回纯文本字符串

         其中,"script"、"json"设置可以解决Ajax的跨域问题。

4.       如果服务器返回的一个字符串或数值,则使用普通的ajax调用即可。

如果服务器返回的是一个JSON对象,那么最好采用jQuery.getJSON的方式,或者设置dataType=json。因为浏览器解析JSON对象需要时间,直接返回JSON对象,节省解析时间,可以避免在服务器明明有返回数据,但是浏览器得不到的错误。

5. Ajax调用是需要时间的,所以一般将Ajax调用后的处理代码全部放在回调方法中。不能采用这样的处理方式:

function getMyPrizeList(){

    if(isNotEmpty(uid)){

        var obj=new Object();

        try{

          jQuery.ajax({type:"GET",url:"someurl",async:false,cache:false,dataType:"script",scriptCharset:"gbk",success:function(json){

                     obj=json;

                  }

              });

           }catch(e){}

           obj=eval("("+obj+")");

           //alert(obj);

           var str="";

           for(var i in obj)

           {

               str+='<tr>'+'<th>'+prizearray[obj[i].prizeno]+'</th>'

               str+='<td>'+'CD-KEY:'+obj[i].cdkey+'</td>'

               str+='<td>'+'期限:'+obj[i].expiratedate+'前'+'</td></tr>';

           }

           jQuery("#prizelist").append(str);

        }

}

而必须这样处理:即将处理代码放到success函数里面!

function getMyPrizeList(){

    if(isNotEmpty(uid)){

        var obj=new Array();

        try{

                  jQuery.ajax({type:"GET",url:"someurl",

                               cache:false,

                               dataType:"script",

                               scriptCharset:"gbk",

                               success:function(json){

                                 try{

                                      obj=result;  

                                }catch(e){}

                                jQuery("#prizelist").html("");

                                var str="";

                                for(var i=0;i<obj.length;i++ ){

                                    str+='<tr><th>'+prizearray[obj[i].prizeno]+'</th>';

                                    str+='<td>CD-KEY:'+obj[i].cdkey+'</td>';

                                    str+='<td>期限:'+obj[i].expiratedate+'前</td></tr>';

                                }

                                jQuery("#prizelist").append(str);                   

                               }

                   });

           }catch(e){}

        }

}

6. jQuery.getJSON实例:

//内部函数,实现债务人详细信息的载入、设置值

    function innerShowDetail() {

       // 获得JSON格式的数据

       $.getJSON('load.do',{id : userId}, function(json) {

           // 根据key设置value

           for (key in json) {

              if(key == 'id'){

                  $('#detailDiv #' + key).val(json[key]);

              } else {

                  if(json[key] == ''){

                     // 没有值设置为空

                     $('#detailDiv #' + key).html(' ');

                  } else if(key == 'sex'){

                     $('#detailDiv #' + key).html(json[key] == '0' ? '女' : '男');

                  } else if(key == 'group'){

                     if(json[key] != null) {

                         $('#detailDiv #' + key).html(json[key]['groupName']);

                     }

                  } else {

                     $('#detailDiv #' + key).html(json[key]);

                  }

              }

           }

           //设置对话框标题和内容

           $('#detailDiv').removeAttr('class');

           dialog.setTitle('查看人员[' + json['userName'] + ']详细资料');

           dialog.setContent($('#detailDiv').html());

       });

    }
Javascript 相关文章推荐
一个可以显示阴历的JS代码
Mar 05 Javascript
Jquery事件的连接使用示例
Jun 18 Javascript
js检验密码强度(低中高)附图
Jun 05 Javascript
js去除输入框中所有的空格和禁止输入空格的方法
Jun 09 Javascript
js实现字符串和数组之间相互转换操作
Jan 12 Javascript
js 实现一些跨浏览器的事件方法详解及实例
Oct 27 Javascript
node+experss实现爬取电影天堂爬虫
Nov 20 Javascript
AngularJS通过ng-route实现基本的路由功能实例详解
Dec 13 Javascript
原生JS仿QQ阅读点击展开、收起效果
Mar 08 Javascript
Node.js利用console输出日志文件的方法示例
Apr 27 Javascript
layui radio性别单选框赋值方法
Aug 15 Javascript
AJAX在JQuery中的应用详解
Jan 30 jQuery
javascript匿名函数实例分析
Nov 18 #Javascript
Linux下使用jq友好的打印JSON技巧分享
Nov 18 #Javascript
删除Javascript Object中间的key
Nov 18 #Javascript
如何在MVC应用程序中使用Jquery
Nov 17 #Javascript
Jquery实现仿腾讯微博发表广播
Nov 17 #Javascript
JavaScript数组常用操作技巧汇总
Nov 17 #Javascript
jquery 实现返回顶部功能
Nov 17 #Javascript
You might like
《魔兽争霸3:重制版》更新 多项视觉效果调整
2020/05/04 魔兽争霸
PHP几个数学计算的内部函数学习整理
2011/08/06 PHP
php自动提交表单的方法(基于fsockopen与curl)
2016/05/09 PHP
php 访问oracle 存储过程实例详解
2017/01/08 PHP
jQuery 研究心得 取得属性的值
2007/11/30 Javascript
JavaScript新窗口与子窗口传值详解
2014/02/11 Javascript
javascript 回到顶部效果的实现代码
2014/02/17 Javascript
Nodejs实现的一个简单udp广播服务器、客户端
2014/09/25 NodeJs
JS动态修改表格cellPadding和cellSpacing的方法
2015/03/31 Javascript
javascript格式化json显示实例分析
2015/04/21 Javascript
JQuery遍历DOM节点的方法
2015/06/11 Javascript
javascript实现密码验证
2015/11/10 Javascript
js实现数字递增特效【仿支付宝我的财富】
2017/05/05 Javascript
Vue编写多地区选择组件
2017/08/21 Javascript
vue2.0.js的多级联动选择器实现方法
2018/02/09 Javascript
vue移动端html5页面根据屏幕适配的四种解决方法
2018/10/19 Javascript
Vue中用props给data赋初始值遇到的问题解决
2018/11/27 Javascript
nodejs环境使用Typeorm连接查询Oracle数据
2019/12/05 NodeJs
three.js 制作动态二维码的示例代码
2020/07/31 Javascript
vue中使用腾讯云Im的示例
2020/10/23 Javascript
[01:01:42]Secret vs Optic Supermajor 胜者组 BO3 第二场 6.4
2018/06/05 DOTA
Python基础教程之利用期物处理并发
2018/03/29 Python
Python饼状图的绘制实例
2019/01/15 Python
Python matplotlib画图与中文设置操作实例分析
2019/04/23 Python
Matplotlib scatter绘制散点图的方法实现
2020/01/02 Python
python日志通过不同的等级打印不同的颜色(示例代码)
2021/01/13 Python
python3定位并识别图片验证码实现自动登录功能
2021/01/29 Python
如何给HTML标签中的文本设置修饰线
2019/11/18 HTML / CSS
SISLEY希思黎官方旗舰店:享誉全球的奢华植物美容品牌
2018/04/25 全球购物
报到证丢失证明
2014/01/11 职场文书
国贸专业的职业规划范文
2014/01/23 职场文书
委托书怎么写
2014/07/31 职场文书
高中生第一学年自我鉴定2015
2014/09/28 职场文书
周一问候语大全
2015/11/10 职场文书
2016入党积极分子考察评语
2015/12/01 职场文书
前端实现滑动按钮AJAX与后端交互的示例代码
2022/02/24 Javascript