ajax

ajax不是一種新的編程語(yǔ)言碴卧,是指一種對(duì)網(wǎng)頁(yè)某部分進(jìn)行更新的技術(shù)弱卡,局部刷新,多個(gè)事件并行發(fā)生 住册,事件不會(huì)相互影響婶博,請(qǐng)求之后不刷新整張頁(yè)面,頁(yè)面不動(dòng)荧飞,只是刷新頁(yè)面的局部凡人。
它的核心對(duì)象是XMLHttpRequest 是一個(gè)JavaScript對(duì)象 存在瀏覽器差異。當(dāng)服務(wù)器端的響應(yīng)不是簡(jiǎn)單的字符串類型而是集合或者對(duì)象時(shí)叹阔,則無(wú)法將對(duì)象響應(yīng)給客戶端 這時(shí)候 就用到了json 需要將對(duì)象以json字符串的形式響應(yīng)給ajax挠轴。對(duì)應(yīng)響應(yīng)為對(duì)象類型的json字符串,響應(yīng)內(nèi)容不能直接使用耳幢,這時(shí)候需要將json字符串轉(zhuǎn)化為js對(duì)象才可以在js中使用:success:function(result){
var user = $.parseJSON(result);// 將json字符串轉(zhuǎn)化為js對(duì)象
alert(user.id);//獲取js對(duì)象中的值
}

Paste_Image.png

1.fastjson將對(duì)象轉(zhuǎn)換為json

String json = JSONObject.toJSONStringWithDateFormat(user,"yyyy年MM月dd日");

2.將json輸出到后臺(tái)

HttpServletResponse resp = new ServletActionContext.getResponse();
// 設(shè)置響應(yīng)頭
resp.setContentType("application/json;charset=UTF-8");
resp.getWriter().print(json);

3.gson將 集合轉(zhuǎn)換json字符串

//Gson轉(zhuǎn)換對(duì)象為json字符串
        /*String json2 = new Gson().toJson(user);
        System.out.println(json2);*/
        Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create();
        String json2 = gson.toJson(list);
        System.out.println(json2);

4.ajax核心xhr get請(qǐng)求 及流程

<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
  <script type="text/javascript">
      $(function(){
          //給用戶名注冊(cè)失去焦點(diǎn)事件
          $("#name").blur(function(){
              var username = $(this).val();
              //1.創(chuàng)建xhr
              var xhr;
              if(window.XMLHttpRequest){
                 xhr = new XMLHttpRequest();
              }else{
                 xhr = new ActiveXObject("Microsoft.XMLHTTP");
              }
              //2.發(fā)送請(qǐng)求并傳遞參數(shù)
              xhr.open("GET","/ajax_day1/user/checkUsername?username="+username);
              xhr.send();
              //3.處理響應(yīng)(完整正確的響應(yīng))
              xhr.onreadystatechange = function(){
                //處理完整  正確
                if(xhr.readyState==4 && xhr.status==200){
                    //alert(xhr.responseText);
                    $("#usernameMessage").text(xhr.responseText);
                }
             }
          });
      
      
      
      
      });
  
  </script>
 </head>
  
  <body>
  
    <form method="post" action="" enctype="application/x-www-form-urlencoded">
        用戶名:<input type="text" id="name" name="name" /><span id="usernameMessage"></span><br/>
        密碼:<input type="text" name="password" /><br/>
        <input type="submit" value="提交" /><br/>
    </form>
  </body>

一些小知識(shí)點(diǎn):
1.$("#usernameMessage").html("<font color='red'>"+result+"</font>");
2.<form method="post" action="" enctype="application/x-www-form-urlencoded">
注意:enctype
3.將json字符串轉(zhuǎn)為js對(duì)象 eval 與 append的運(yùn)用

                       //result 是一個(gè)json類型的字符串
                    //將json字符串轉(zhuǎn)為js對(duì)象|數(shù)組
                    var jsObject = eval("("+result+")");
                    var nameLi = $("<li></li>").text("姓名:"+jsObject.name);
                    var ageLi = $("<li></li>").text("年齡:"+jsObject.age);
                    var birLi = $("<li></li>").text("生日:"+jsObject.bir);
                    
                    //添加
                    $("#ul").append(nameLi).append(ageLi).append(birLi);
                    
                    //顯示
                    $("#ul").show(2000);



 <body>
   <input type="button" id="btn" value="通過(guò)ajax展示一個(gè)人"/><br/>
   <ul id="ul" style="display: none;">
     
   </ul>
   
  </body>

5.Jquery框架封裝的ajax發(fā)送ajax請(qǐng)求
$.ajax
$.post
$.get

<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
  <script type="text/javascript">
      $(function(){
      
          /*    $("#btn").click(function(){
            
            }); */
            //live 既可以給頁(yè)面中原有的標(biāo)簽注冊(cè)事件 也可以給生成的標(biāo)簽注冊(cè)事件
            $("#btn").live("click",function(){
                //發(fā)送ajax異步請(qǐng)求
                /* $.ajax({
                    type:"POST",
                    url :"/ajax_day2/user/findUser",
                    dataType:"JSON",//預(yù)期數(shù)據(jù)為json   text/plain  text    application/json  json     text/xml application/xml   xml
                    success:function(result){
                        $("#ul").empty().hide(1000);
                        console.log(result);
                        //當(dāng)服務(wù)器端的響應(yīng)類型設(shè)置為application/json時(shí) jquery框架自動(dòng)將json字符串轉(zhuǎn)換為js對(duì)象|數(shù)組
                        //當(dāng)服務(wù)器端沒(méi)有設(shè)置響應(yīng)類型 但是在ajax中設(shè)置了dataType屬性為json時(shí) Jquery框架也會(huì)自動(dòng)將結(jié)果轉(zhuǎn)換為js對(duì)象|數(shù)組
                        //注意:當(dāng)服務(wù)器端沒(méi)有設(shè)置響應(yīng)類型時(shí) 且 ajax函數(shù)中沒(méi)有設(shè)置dataType時(shí)   result一定是json字符串 使用時(shí)需要轉(zhuǎn)為js對(duì)象|數(shù)組處理
                        //推薦:使用 后端服務(wù)器設(shè)置相應(yīng)類型   并且  前端ajax函數(shù)中設(shè)置dataType 屬性  
                        var nameLi = $("<li></li>").text("姓名:"+result.name);
                        var ageLi = $("<li></li>").text("年齡:"+result.age);
                        var birLi = $("<li></li>").text("生日:"+result.bir);
                        $("#ul").append(nameLi).append(ageLi).append(birLi).show(2000);
                    }
                }); */
                /* $.get("/ajax_day2/user/findUser",function(result){
                    $("#ul").empty().hide(1000);
                    var nameLi = $("<li></li>").text("姓名:"+result.name);
                    var ageLi = $("<li></li>").text("年齡:"+result.age);
                    var birLi = $("<li></li>").text("生日:"+result.bir);
                    $("#ul").append(nameLi).append(ageLi).append(birLi).show(2000);
                },"JSON"); */
                 $.post("/ajax_day2/user/findUser","name=zhangsan",function(result){
                    $("#ul").empty().hide(1000);
                    var nameLi = $("<li></li>").text("姓名:"+result.name);
                    var ageLi = $("<li></li>").text("年齡:"+result.age);
                    var birLi = $("<li></li>").text("生日:"+result.bir);
                    $("#ul").append(nameLi).append(ageLi).append(birLi).show(2000);
                },"JSON"); 
            });
      
      });
  </script>
 </head>
  
  <body>
  
   <input  type="button" id="btn" value="展示一個(gè)人"/><br/>
   <ul id="ul" style="display: none;">
    
   </ul>
  </body>

6.省市縣 三級(jí)聯(lián)動(dòng)

<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
  <script type="text/javascript">
    $(function(){
          
          //發(fā)送ajax請(qǐng)求加載所有省份信息
          $.ajax({
            type:"POST",
            url:"user/queryProvinces",
            dataType:"JSON",
            success:function(result){
                console.log(result);
                //遍歷省份信息
                /* $.each(result,function(i,province){
                    var poption = $("<option></option>").text(province.name).val(province.code);
                    $("#sheng").append(poption);
                }); */
                createOption(result, $("#sheng"));
                //省的下拉列表改變
                $("#sheng").change();
            }
          });   
          
          //當(dāng)省份的下拉列表改變
          $("#sheng").change(function(){
                $("#shi").empty();
                //獲取當(dāng)前選中的option屬性的值 value
                var provinceCode = $(this).val();
                //console.log(provinceCode);
                //發(fā)送ajax請(qǐng)求傳遞省份的編號(hào)到后臺(tái)
                $.get("user/queryCitys",{"provinceCode":provinceCode},function(result){
                    /* $.each(result,function(i,city){
                        var coption = $("<option></option>").text(city.name).val(city.code);
                        $("#shi").append(coption);
                    }); */
                    createOption(result, $("#shi"));
                    //市的下拉列表改變
                    $("#shi").change();
                },"JSON");
          });
          
          
          //當(dāng)市改變發(fā)送ajax其請(qǐng)求獲取當(dāng)前市下的所有縣
          
          $("#shi").change(function(){
            $("#xian").empty();
            var cityCode = $(this).val();
            
            //發(fā)送post請(qǐng)求根據(jù)市的編號(hào)查詢所有縣
            $.post("user/queryAreas","cityCode="+cityCode,function(result){
                /* $.each(result,function(i,area){
                    var xoption = $("<option></option>").text(area.name).val(area.code);
                    $("#xian").append(xoption);
                }); */
                createOption(result, $("#xian"));
            },"JSON");
          });
    });
    
    function  createOption(result,parent){
        $.each(result,function(i,res){
            var coption = $("<option></option>").text(res.name).val(res.code);
            parent.append(coption);
        });
    }
  </script>
  
  
  </head>
  
  <body>
        省:<select id="sheng"></select>
        市:<select id="shi"></select>
        縣:<select id="xian"></select>
  </body>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末岸晦,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌启上,老刑警劉巖邢隧,帶你破解...
    沈念sama閱讀 216,919評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異冈在,居然都是意外死亡府框,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門讥邻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人院峡,你說(shuō)我怎么就攤上這事兴使。” “怎么了照激?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,316評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵发魄,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我俩垃,道長(zhǎng)励幼,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,294評(píng)論 1 292
  • 正文 為了忘掉前任口柳,我火速辦了婚禮苹粟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘跃闹。我一直安慰自己嵌削,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布望艺。 她就那樣靜靜地躺著苛秕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪找默。 梳的紋絲不亂的頭發(fā)上艇劫,一...
    開(kāi)封第一講書(shū)人閱讀 51,245評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音惩激,去河邊找鬼店煞。 笑死,一個(gè)胖子當(dāng)著我的面吹牛咧欣,可吹牛的內(nèi)容都是我干的浅缸。 我是一名探鬼主播,決...
    沈念sama閱讀 40,120評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼魄咕,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼衩椒!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,964評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤毛萌,失蹤者是張志新(化名)和其女友劉穎苟弛,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體阁将,經(jīng)...
    沈念sama閱讀 45,376評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡膏秫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了做盅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缤削。...
    茶點(diǎn)故事閱讀 39,764評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖吹榴,靈堂內(nèi)的尸體忽然破棺而出亭敢,到底是詐尸還是另有隱情,我是刑警寧澤图筹,帶...
    沈念sama閱讀 35,460評(píng)論 5 344
  • 正文 年R本政府宣布帅刀,位于F島的核電站,受9級(jí)特大地震影響远剩,放射性物質(zhì)發(fā)生泄漏扣溺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評(píng)論 3 327
  • 文/蒙蒙 一瓜晤、第九天 我趴在偏房一處隱蔽的房頂上張望锥余。 院中可真熱鬧,春花似錦活鹰、人聲如沸哈恰。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,697評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)着绷。三九已至,卻和暖如春锌云,著一層夾襖步出監(jiān)牢的瞬間荠医,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,846評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工桑涎, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留彬向,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,819評(píng)論 2 370
  • 正文 我出身青樓攻冷,卻偏偏與公主長(zhǎng)得像娃胆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子等曼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • AJAX 原生js操作ajax 1.創(chuàng)建XMLHttpRequest對(duì)象 var xhr = new XMLHtt...
    碧玉含香閱讀 3,196評(píng)論 0 7
  • Ajax的基本概念及使用 同步&異步 同步:必須等待前面的任務(wù)完成里烦,才能繼續(xù)后面的任務(wù)凿蒜; 異步:不受當(dāng)前主要任務(wù)的...
    magic_pill閱讀 1,950評(píng)論 0 5
  • Ajax準(zhǔn)備知識(shí):json 什么是json? 定義: JSON(JavaScript Object Notatio...
    lkning閱讀 940評(píng)論 0 2
  • 一)什么是JavaScript JS是什么?(1) 基于對(duì)象JS本身就有一些現(xiàn)成的對(duì)象可供程序員使用胁黑,例如:Arr...
    奮斗的老王閱讀 1,518評(píng)論 0 49
  • Ajax 模塊也是經(jīng)常會(huì)用到的模塊废封,Ajax 模塊中包含了 jsonp 的現(xiàn)實(shí),和 XMLHttpRequest ...
    對(duì)角另一面閱讀 605評(píng)論 0 1