①雜記:前面有原始生態JavaScript實作ajax這裡又多了更簡單的方法實作ajax
#②$.get()方法的常用參數
參數 | 類型 | 說明 |
url | String | 必選,規定發送地址 |
data | PlainObject或String | 可選,規定請求發送的資料 |
success |
Function(PlainObject data, #String textStatus,jqXHR jqxhr) |
可選,成功後呼叫的函數 參數data:可選伺服器回傳結果 參數textStatus:可選描述請求狀態 參數jqxhr:可選是XMLHttpRequest的超集 (如果指定dataType這個必選) |
dataType | String | 可選:預期伺服器傳回的資料類型 |
③$.post()方法的常用參數同上
一.單字部分(JSON常用單字)
1.load 載入 2.serialize序列化 3.contains 包含 4.feature 特徵
5.quote 引用 6.skip 跳 7.transient 短暫的 8.pretty 相當
9.prototype 原型 10.conflict 衝突
#二.關於JSON一些常見問題
1.jQuery實作Ajax的主要方法
①原生態實作
②$.get()和$.post()方法
③$.getJSON()方法
④.load()
2.jQuery解析表單資料
jQuery的.serializeArray()方法會從一組表單元素中偵測有效控制項:
①元素不能被停用
②元素必須有name屬性
③選取的checkbox才是有效的
④選取的radio才是有效的
⑤只有觸發提交事件的submit按鈕才是有效的
⑥file元素不會被序列化
3.jQuery與其它3
三.實作Ajax
1.使用$.get()方法實作非同步驗證註冊郵箱
<span style="color: #008080"> 1</span> <span style="color: #000000">$(function(){ </span><span style="color: #008080"> 2</span> $(<span style="color: #800000">"</span><span style="color: #800000">#email</span><span style="color: #800000">"</span><span style="color: #000000">).blur(function(){ </span><span style="color: #008080"> 3</span> <span style="color: #0000ff">var</span> email=$(<span style="color: #800000">"</span><span style="color: #800000">#email</span><span style="color: #800000">"</span><span style="color: #000000">).val(); </span><span style="color: #008080"> 4</span> <span style="color: #0000ff">if</span>(email==<span style="color: #0000ff">null</span> || email==<span style="color: #800000">""</span><span style="color: #000000">){ </span><span style="color: #008080"> 5</span> $(<span style="color: #800000">"</span><span style="color: #800000">#samp</span><span style="color: #800000">"</span>).html(<span style="color: #800000">"</span><span style="color: #800000">邮箱不能为空!</span><span style="color: #800000">"</span><span style="color: #000000">); </span><span style="color: #008080"> 6</span> <span style="color: #000000"> } </span><span style="color: #008080"> 7</span> <span style="color: #0000ff">else</span><span style="color: #000000">{ </span><span style="color: #008080"> 8</span> $.<span style="color: #0000ff">get</span>(<span style="color: #800000">"</span><span style="color: #800000">userServlet</span><span style="color: #800000">"</span>,<span style="color: #800000">"</span><span style="color: #800000">email=</span><span style="color: #800000">"</span>+<span style="color: #000000">email,callBack); </span><span style="color: #008080"> 9</span> <span style="color: #000000"> function callBack(data){ </span><span style="color: #008080">10</span> <span style="color: #0000ff">if</span>(data==<span style="color: #800000">"</span><span style="color: #800000">true</span><span style="color: #800000">"</span><span style="color: #000000">){ </span><span style="color: #008080">11</span> $(<span style="color: #800000">"</span><span style="color: #800000">#samp</span><span style="color: #800000">"</span>).html(<span style="color: #800000">"</span><span style="color: #800000">邮箱已被注册!</span><span style="color: #800000">"</span><span style="color: #000000">); </span><span style="color: #008080">12</span> <span style="color: #000000"> } </span><span style="color: #008080">13</span> <span style="color: #0000ff">else</span><span style="color: #000000">{ </span><span style="color: #008080">14</span> $(<span style="color: #800000">"</span><span style="color: #800000">#samp</span><span style="color: #800000">"</span>).html(<span style="color: #800000">"</span><span style="color: #800000">邮箱可注册!</span><span style="color: #800000">"</span><span style="color: #000000">); </span><span style="color: #008080">15</span> <span style="color: #000000"> } </span><span style="color: #008080">16</span> <span style="color: #000000"> } </span><span style="color: #008080">17</span> <span style="color: #000000"> } </span><span style="color: #008080">18</span> <span style="color: #000000"> }); </span><span style="color: #008080">19</span> <span style="color: #008080">20</span> });
2.使用$.getJSON()方法載入管理員頁面主題清單
<span style="color: #008080"> 1</span> $.getJSON("userServlet","por=top"<span style="color: #000000">,callTopics); </span><span style="color: #008080"> 2</span> <span style="color: #008080"> 3</span> <span style="color: #0000ff">function</span><span style="color: #000000"> callTopics(top){ </span><span style="color: #008080"> 4</span> <span style="color: #008080"> 5</span> <span style="color: #0000ff">var</span> $userul=$("#userul"<span style="color: #000000">).empty(); </span><span style="color: #008080"> 6</span> <span style="color: #0000ff">for</span>(<span style="color: #0000ff">var</span> i=0;i<<span style="color: #000000">top.length;){ </span><span style="color: #008080"> 7</span> <span style="color: #008000">//</span><span style="color: #008000">alert("ddd");</span> <span style="color: #008080"> 8</span> <span style="color: #000000"> $userul.append( </span><span style="color: #008080"> 9</span> "<li>"+top[i].topics+" <a href=''>修改</a> <a href=''>删除</a></li>" <span style="color: #008080">10</span> <span style="color: #000000"> ); </span><span style="color: #008080">11</span> i++<span style="color: #000000">; </span><span style="color: #008080">12</span> <span style="color: #0000ff">if</span>(i==<span style="color: #000000">top.length){ </span><span style="color: #008080">13</span> <span style="color: #008080">14</span> <span style="color: #0000ff">break</span><span style="color: #000000">; </span><span style="color: #008080">15</span> <span style="color: #000000"> } </span><span style="color: #008080">16</span> <span style="color: #000000"> } </span><span style="color: #008080">17</span> }
3.在Ajax中直接傳回HTML內容產生主題管理頁面
<span style="color: #008080"> 1</span> <span style="color: #000000">$.ajax({ </span><span style="color: #008080"> 2</span> "url":"userServlet"<span style="color: #000000">, </span><span style="color: #008080"> 3</span> "type":"GET"<span style="color: #000000">, </span><span style="color: #008080"> 4</span> "data":"por=top1"<span style="color: #000000">, </span><span style="color: #008080"> 5</span> "dataType":"html"<span style="color: #000000">, </span><span style="color: #008080"> 6</span> "success"<span style="color: #000000">:callTopics </span><span style="color: #008080"> 7</span> <span style="color: #000000">}); </span><span style="color: #008080"> 8</span> <span style="color: #0000ff">function</span><span style="color: #000000"> callTopics(data){ </span><span style="color: #008080"> 9</span> $("#userul"<span style="color: #000000">).html(data); </span><span style="color: #008080">10</span> }
4.使用.load()方法為管理員頁面載入伺服器產生的主題清單
$("#userul").load("userServlet","por=top1");
5.使用Ajax實作無刷新的新聞評論功能
<span style="color: #008080"> 1</span> <span style="color: #0000ff">if</span>(por.equals("addCom"<span style="color: #000000">)){ </span><span style="color: #008080"> 2</span> <span style="color: #008000">//</span><span style="color: #008000">上机5添加评论</span> <span style="color: #008080"> 3</span> comment com=<span style="color: #0000ff">new</span><span style="color: #000000"> comment(); </span><span style="color: #008080"> 4</span> commentdao comdao=<span style="color: #0000ff">new</span><span style="color: #000000"> commentimpl(); </span><span style="color: #008080"> 5</span> String name=request.getParameter("cauthor1"<span style="color: #000000">); </span><span style="color: #008080"> 6</span> String ip=request.getParameter("cip"<span style="color: #000000">); </span><span style="color: #008080"> 7</span> String content=request.getParameter("ccontent"<span style="color: #000000">); </span><span style="color: #008080"> 8</span> String ctime="2017-7-4"<span style="color: #000000">; </span><span style="color: #008080"> 9</span> <span style="color: #008000">//</span><span style="color: #008000">time.toString();</span> <span style="color: #008080">10</span> <span style="color: #000000"> com.setCname(name); </span><span style="color: #008080">11</span> <span style="color: #000000"> com.setCcontent(content); </span><span style="color: #008080">12</span> <span style="color: #000000"> com.setCip(ip); </span><span style="color: #008080">13</span> <span style="color: #000000"> com.setCtime(ctime); </span><span style="color: #008080">14</span> <span style="color: #0000ff">int</span> re=<span style="color: #000000">comdao.addcomment(com); </span><span style="color: #008080">15</span> String result=""<span style="color: #000000">; </span><span style="color: #008080">16</span> <span style="color: #0000ff">if</span>(re>0<span style="color: #000000">){ </span><span style="color: #008080">17</span> result="success"<span style="color: #000000">; </span><span style="color: #008080">18</span> }<span style="color: #0000ff">else</span><span style="color: #000000"> { </span><span style="color: #008080">19</span> result="添加失败!"<span style="color: #000000">; </span><span style="color: #008080">20</span> <span style="color: #000000"> } </span><span style="color: #008080">21</span> <span style="color: #008080">22</span> <span style="color: #008080">23</span> response.setContentType("text/html;charset=UTF-8"<span style="color: #000000">); </span><span style="color: #008080">24</span> PrintWriter out=<span style="color: #000000">response.getWriter(); </span><span style="color: #008080">25</span> out.print("[{\"result\":\""+result+"\",\"ctime\":\""+ctime+"\"}]"<span style="color: #000000">); </span><span style="color: #008080">26</span> <span style="color: #000000"> out.flush(); </span><span style="color: #008080">27</span> <span style="color: #000000"> out.close(); </span><span style="color: #008080">28</span> <span style="color: #008080">29</span> }
6.使用FastJSON改造管理員頁面載入主題清單
topdao nd=<span style="color: #0000ff">new</span><span style="color: #000000"> topimpl(); List</span><top> listtop=<span style="color: #000000">nd.alltop(); String titleJson</span>=JSON.toJSONStringWithDateFormat(listtop,"yyyy-MM--dd HH:mm:ss");
四.加深理解
透過FastJSON的相關API可以簡化伺服器端產生的JSON字串程式碼
$.parseJSON()方法用來將JSON格式字串解析為JSON物件
以上是accp8.0轉換教材第11章Ajax交互擴展理解與練習的詳細內容。更多資訊請關注PHP中文網其他相關文章!