zoukankan      html  css  js  c++  java
  • 服务器8

    复习:

    见思维导图

    练习:学生按分数级别显示     

    (1)编写SQL:tarena.sql,表student(sid, sname, pic, scoreGrade(A-B-C-D)),插入12条记录

    (2)编写PHP:student_select.php,根据客户端请求分数级别,返回该级别下有哪些学生,以JSON格式

    (3)编写HTML:student.select.html,页头提供ABCD四个级别,鼠标悬停在某个级别上,立即异步请求该级别有哪些学生

    今日目标:            

    (1)PPT上的小知识点拾遗

    (2)AJAX阶段项目 —— 重点

    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文件的路径;

  • 相关阅读:
    友盟上报 IOS
    UTF8编码
    Hill加密算法
    Base64编码
    Logistic Regression 算法向量化实现及心得
    152. Maximum Product Subarray(中等, 神奇的 swap)
    216. Combination Sum III(medium, backtrack, 本类问题做的最快的一次)
    77. Combinations(medium, backtrack, 重要, 弄了1小时)
    47. Permutations II(medium, backtrack, 重要, 条件较难思考)
    3.5 find() 判断是否存在某元素
  • 原文地址:https://www.cnblogs.com/Hale-Proh/p/7199813.html
Copyright © 2011-2022 走看看