經(jīng)驗(yàn)不在于年限,在于積累---專注互聯(lián)網(wǎng)軟件開發(fā)

          把工作當(dāng)事業(yè)做,把項(xiàng)目當(dāng)作品做!

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            55 Posts :: 0 Stories :: 66 Comments :: 0 Trackbacks
           
          (友情提示:本博文章歡迎轉(zhuǎn)載,但請注明出處:陳新漢,http://www.aygfsteel.com/hankchen

            jQuery提供了簡單而強(qiáng)大的選擇器功能,同時(shí)對(duì)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()功能比較強(qiáng)大,可配置的參數(shù)比較多,現(xiàn)在主要對(duì)這個(gè)方法的注意事項(xiàng)進(jìn)行總結(jié)。

          1.       jQuery.ajax()默認(rèn)是以異步的方式請求的,如果需要同步,使用參數(shù)async為false。因?yàn)橛行?yīng)用必須同步請求數(shù)據(jù)的。例如,某些FlashJS交互應(yīng)用中,請求一個(gè)JS函數(shù)需要馬上得到返回?cái)?shù)據(jù)。此時(shí),必須采用同步的Ajax調(diào)用方式。

          2.       Ajax如果是Get請求,返回的數(shù)據(jù)一般會(huì)被瀏覽器緩存,如果不想被緩存,可以設(shè)置cache參數(shù)為false;或者發(fā)送請求是帶上時(shí)間戳,這樣瀏覽器會(huì)認(rèn)為是新的請求,而重新從服務(wù)器加載數(shù)據(jù)。當(dāng)然,如果是POST發(fā)送的請求則不會(huì)被緩存。

          3.       dataType預(yù)期服務(wù)器返回的數(shù)據(jù)類型。如果不指定,jQuery 將自動(dòng)根據(jù) HTTP MIME 信息返回 responseXML responseText,并作為回調(diào)函數(shù)參數(shù)傳遞,可用值:

          1"xml": 返回 XML 文檔,可用 jQuery 處理。

          2"html": 返回純文本 HTML 信息;包含的script標(biāo)簽會(huì)在插入dom時(shí)執(zhí)行。

          3"script": 返回純文本 JavaScript 代碼。不會(huì)自動(dòng)緩存結(jié)果。除非設(shè)置了"cache"參數(shù)。'''注意:'''在遠(yuǎn)程請求時(shí)(不在同一個(gè)域下),所有POST請求都將轉(zhuǎn)為GET請求。(因?yàn)閷⑹褂?/span>DOMscript標(biāo)簽來加載)

          4"json": 返回 JSON 數(shù)據(jù)

          5"jsonp": JSONP 格式。使用 JSONP 形式調(diào)用函數(shù)時(shí),如 "myurl?callback=?" jQuery 將自動(dòng)替換 ? 為正確的函數(shù)名,以執(zhí)行回調(diào)函數(shù)。

          6"text": 返回純文本字符串

                   其中,"script""json"設(shè)置可以解決Ajax的跨域問題。

          4.       如果服務(wù)器返回的一個(gè)字符串或數(shù)值,則使用普通的ajax調(diào)用即可。

          如果服務(wù)器返回的是一個(gè)JSON對(duì)象,那么最好采用jQuery.getJSON的方式,或者設(shè)置dataType=json。因?yàn)闉g覽器解析JSON對(duì)象需要時(shí)間,直接返回JSON對(duì)象,節(jié)省解析時(shí)間,可以避免在服務(wù)器明明有返回?cái)?shù)據(jù),但是瀏覽器得不到的錯(cuò)誤。

          5. Ajax調(diào)用是需要時(shí)間的,所以一般將Ajax調(diào)用后的處理代碼全部放在回調(diào)方法中。不能采用這樣的處理方式:

          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函數(shù)里面!

          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實(shí)例:

          //內(nèi)部函數(shù),實(shí)現(xiàn)債務(wù)人詳細(xì)信息的載入、設(shè)置值

              function innerShowDetail() {

                 // 獲得JSON格式的數(shù)據(jù)

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

                     // 根據(jù)key設(shè)置value

                     for (key in json) {

                        if(key == 'id'){

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

                        } else {

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

                               // 沒有值設(shè)置為空

                               $('#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]);

                            }

                        }

                     }

                     //設(shè)置對(duì)話框標(biāo)題和內(nèi)容

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

                     dialog.setTitle('查看人員[' + json['userName'] + ']詳細(xì)資料');

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

                 });

              }

           (友情提示:本博文章歡迎轉(zhuǎn)載,但請注明出處:陳新漢,http://www.aygfsteel.com/hankchen
          posted on 2010-01-04 13:27 hankchen 閱讀(3707) 評(píng)論(0)  編輯  收藏 所屬分類: JS+jQuery
          主站蜘蛛池模板: 资中县| 临桂县| 芷江| 周至县| 固镇县| 惠东县| 岑巩县| 抚宁县| 营口市| 乡宁县| 秦皇岛市| 田东县| 南丹县| 方正县| 龙游县| 涿州市| 汉源县| 驻马店市| 闽侯县| 安平县| 汝阳县| 山阴县| 西平县| 磴口县| 南阳市| 壶关县| 宜昌市| 黄陵县| 满洲里市| 郯城县| 黎平县| 吴忠市| 绥棱县| 莒南县| 平度市| 宁波市| 赣州市| 虹口区| 镇原县| 合肥市| 长春市|