服務器8

複習:javascript

見思惟導圖php

 

練習:學生按分數級別顯示     html

(1)編寫SQL:tarena.sql,表student(sid, sname, pic, scoreGrade(A-B-C-D)),插入12條記錄java

(2)編寫PHP:student_select.php,根據客戶端請求分數級別,返回該級別下有哪些學生,以JSON格式面試

(3)編寫HTML:student.select.html,頁頭提供ABCD四個級別,鼠標懸停在某個級別上,當即異步請求該級別有哪些學生ajax

 

 

今日目標:            sql

(1)PPT上的小知識點拾遺數據庫

(2)AJAX階段項目 —— 重點json

 

 

 

1. JS中如何處理JSON字符串跨域

  把JSON格式的字符串解析爲JS對象:

       var str = '{"ename":"Tom", "age":20}';

       var obj = JSON.parse(str);           //方法1

       var obj = eval( '('+str+')' );           //方法2,不推薦使用

  把JS對象編碼爲JSON字符串:

       var obj = {ename:'Tom', age: 20};

       var str = JSON.stringify(obj);   

 

     -ify: 使變爲...,   sheepify    stoneify    frogify

=================================

  PHP中把數組編碼爲JSON字符串:

       $list = [{},{},{}];

       $str = json_encode( $list );

  PHP中JSON字符串解析爲PHP數組/對象:

       $str = '{"ename":"Tom", "age":20}';

       $obj = json_decode( $str );

 

 

2.面試題:跨域請求和JSONP

  Cross Domain Request:從一個資源請求另外一個資源,兩者所在的請求地址不一樣,域名不一樣、端口號不一樣、請求協議不一樣。

       http://www.tmooc.cn/list.html

       http://www.tedu.cn/student_select.php

 

  提示:localhost和127.0.0.1也算跨域!

  瀏覽器容許跨域請求的情形

       IMG、LINK、SCRIPT、IFRAME ...

  瀏覽器禁止跨域請求的情形

       XHR  —— 瀏覽器處於安全考慮,禁用了XHR的跨域請求(其實服務器給出了響應消息,但瀏覽器不讓使用)

 

面試題:咱們公司項目很大,頁面不少,出於性能考慮,把靜態資源(html等)放在http://static.tmooc.cn服務器上了,把動態資源(php)放在http://dynamic.tmooc.cn服務器上了,如何讓一個x.html異步請求x.php呢?

 

如何解決瀏覽器的XHR跨域請求限制 —— 八種方案:

  (1)

  (2)

  (3)

  (4)

  (5)

  (6)

  (7) 修改響應消息頭部,添加Access-Control-Allow-Origin頭部

  (8) 使用JSONP——很是巧妙

 

JSON: JavaScript Object Notation,是一種字符串數據格式(羊肉)。

JSONP:JSON with Padding,填充式JSON,與JSON徹底兩碼事,是一種使用JSON數據的方式(把羊肉紅燒)。意思是在JSON字符串左右添加函數名: doResponse( {"ename":"Tom", "age":20} );

JSONP是專用於解決XHR跨域限制一種手段。基本原理:使用動態建立的一個SCRIPT標籤代替XHR發起異步請求,要求服務器必須返回application/javascript,當即在客戶端執行——要執行的函數本體在客戶端瀏覽器中聲明。

  <script src="x.php" async></script>

 

 

面試題:jQuery中如何使用JSONP發起異步請求:

(1) $.getJSON()

  用途1:使用XHR發起異步請求(不能跨域)

       $.getJSON('x.php', doResponse)

  用途2:使用JSONP發起跨域異步請求

       $.getJSON('http://跨域地址/x.php?callback=?', doResponse)

 

(2) $.ajax()

  用途1:使用XHR發起異步請求(不能跨域)

       $.ajax({  })

  用途2:使用JSONP發起跨域異步請求

       $.ajax({ dataType: 'jsonp' })

 

 

3.AJAX階段項目 —— 京東購物車

  功能點描述

  (1)異步的用戶登陸

  (2)異步的顯示商品列表,實現分頁顯示

  (3)異步的添加到「個人購物車」

  (4)查看「個人購物車」

  (5)異步的修改「個人購物車」

 

  項目標準: 根據註釋,你們在前面寫,我在後面提示——項目代碼必須有本身的思路!

 

  實現步驟:   SQL => PHP => HTML/JS                

  (1)編寫SQL:jd.sql,數據庫名jd,

       建立表:jd_user(uid, uname, upwd),插入2行記錄:

                            10    qiangdong     123456

                            20    naicha            456789

       建立表:jd_product(pid, pname, price, pic),插入36行記錄;

       建立表:jd_cart( cid,  userId ),插入一行記錄:

                            101          10

       建立表:jd_cart_detail(did, cartId, productId, count),插入以下的3行測試記錄:                    

                            1    101   15        3      

                            2    101   18        1

                            3    101   21        2

  (2)編寫PHP:data/header.php,包含頁頭必需的HTML片斷(第一階段項目中尋找)——不是完整的HTML!

       <?php header('Content-Type: text/html;charset=UTF-8'); ?>

       <div>....</div><div>....</div>

  (3)編寫PHP:data/footer.php,包含頁尾必需的HTML片斷(第一階段項目中尋找)——不是完整的HTML!

  (4)編寫HTML:productlist.html,待頁面加載完成,異步加載頁頭和頁尾。

       $('#header').load('data/header.php')

       注意:控制檯不能有404錯誤!

  (5)編寫PHP:user_login.php,接收客戶端提交的uname和upwd,執行數據庫驗證,返回 {"code":1, "uname":"qiangdong", "uid":10} 或 {"code":2, "msg":"用戶名或密碼錯誤" }

       $str = "{\"code\":1, \"uname\":\"$uname\"}";  echo $str;

       $arr = ['code'=>1, 'uname'=>$uname];   echo json_encode($arr);

-------------------文華的進度線---------------------

  (6)修改HTML:productlist.html,默認顯示出登陸對話框,異步登陸驗證,失敗則提示錯誤消息,成功則清除掉對話框,顯示「歡迎回來:xxxx」

  (7)編寫PHP:product_select.php,向客戶端輸出全部的產品信息,以JSON格式:[{},{},{},....]

  (8)修改HTML: productlist.html,頁面加載完後,異步請求全部的產品

  (9)編寫PHP:cart_product_add.php,接收客戶端提交uid、pid,添加入購物車詳情表,若已有該商品,則購買數量+1  —— 須要執行多條SQL語句,有挑戰性!

 

 

 

4.JS和CSS加載外部資源的路徑問題

  JS是運行於HTML網頁中,JS中請求的資源的路徑使用相對於HTML文件的路徑;

  CSS是獨立被瀏覽器解釋,CSS中使用外部資源(如圖片)路徑使用相對於CSS文件的路徑;

相關文章
相關標籤/搜索