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

时间: 2024-10-16 10:23:13

服务器8的相关文章

Sqlserver通过链接服务器访问Oracle的解决办法

转自http://blog.sina.com.cn/s/blog_614b6f210100t80r.html 一.创建sqlserver链接服务(sqlserver链接oracle)  首先sqlserver 链接oracle可以通过两个访问接口: “MSDAORA” 和“OraOLEDB.Oracle” 1.“MSDAORA”访问接口是由Microsoft OLE DB Provider for Oracle提供的,这里建议不使用此接口进行链接.通过该访问接口建立的链接服务器在进行查询orac

XShell 连接虚拟机中的服务器 失败 、连接中断(Connection closed by foreign host.)

在使用XShell连接虚拟机中的服务器时,报以下错误并断开连接,之前连接还是挺稳定的,忽然就这样了 Last login: Thu Aug 10 21:28:38 2017 from 192.168.1.102 [[email protected] ~]# Socket error Event: 32 Error: 10053. Connection closing...Socket close. Connection closed by foreign host. Disconnected f

通过SoftEther VPN自建VPN服务器

SoftEther VPN是日本政府的研究和开发项目的一项工作,由日本的经济.贸易和工业部资助,由信息化推进机构管理.SoftEther VPN在日本筑波大学开发的免费软件.具有终极兼容许多设备的高性能VPN.支持Windows.Mac.智能手机.平板电脑(iPhone\iPad\Android\WindowsRT)和思科或其他VPN路由器.SoftEther VPN也接受OpenVPN和MS-SSTP VPN客户端. 可以从http://www.softether-download.com/(

微信开发之本地接口调试(非80端口,无需上传服务器服务器访问

前言: 本文是总结在开发微信接口时,为方便开发所采取的一些快捷步骤,已节省开发人员难度开发时间从而提高开发效率. 本地测试: (提醒,在本地模拟微信get或post数据时先将校验参数注释掉) 利用微信模拟器weixinPost进行模拟发送xml数据 由于这个软件是微信没公开高级接口时公布的,所以对于高级接口的调试,笔者利用的是Fiddler这个抓包工具模拟post数据 高端测试: 利用反向代理软件ngrok访问本地项目: ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之

pfsense Web服务器负载平衡配置示例

在pfsense的网关和服务器中有两种类型的负载平衡功能.网关负载平衡可以通过多个WAN连接分发Internet绑定的流量.服务器负载平衡管理传入流量,因此它利用多个内部服务器进行负载分配和冗余,服务器负载平衡允许流量在多个内部服务器之间分配,它最常用于Web服务器和SMTP服务器.下面我们就以实例来介绍服务器负载平衡的设置. 下面介绍如何通过pfsense2.32配置Web服务器的负载平衡. 网络环境 服务器负载平衡示例网络环境 上图为示例网络环境.它由单个防火墙组成,使用其WAN IP地址池

部署AlwaysOn第一步:搭建Windows服务器故障转移集群

在Windows Server 2012 R2 DataCenter 环境中搭建集群之前,首先要对Windows服务器故障转移集群(Windows Server Failover Cluster,简称WSFC)有基本的了解.WSFC必须部署在域管理环境中,由多台服务器组成,每台服务器称作一个"结点"(Node),每个结点上都运行了Windows服务器故障转移集群服务,整个集群系统允许部分结点掉线.故障或损坏而不影响整个系统的正常运作.集群自动检测结点的健康状态,一旦活跃结点发生异常,变

如何将Win7做为NTP服务器

1. 修改注册表项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer Enabled 设定为 1(默认0) HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\ AnnounceFlags 设定为 5 (默认 10) Value Meaning 0 Timeserv_Announce_No, R

win7搭建局域网时间服务器

近日,本人想在局域网内通过普通的windows 7 PC搭建一台NTP服务器,可看似简单的配置却给我捣腾了了半天.初期,参考了互联网的上相关的配置文档,可网络设备就是死活不同步NTP服务器的时间.实在没办法,只有通过来抓包分析了,经过一番研究后,终于找到问题,现将这个文档与大家分享: 通过windows系统为局域网搭建NTP服务器,为局域网内网络设备提供时间服务,经过测试,使用于windows xp.windows 2003.windows 7. 1.启用 NTPServer.为此,请按照下列步

C# 远程服务器 安装、卸载 Windows 服务,读取远程注册表,关闭杀掉远程进程

这里安装windows服务我们用sc命令,这里需要远程服务器IP,服务名称.显示名称.描述以及执行文件,安装后需要验证服务是否安装成功,验证方法可以直接调用ServiceController来查询服务,也可以通过远程注册表来查找服务的执行文件:那么卸载文件我们也就用SC命令了,卸载后需要检测是否卸载成功,修改显示名称和描述也用sc命令.至于停止和启动Windows服务我们可以用sc命令也可以用ServiceController的API,当停止失败的时候我们会强制杀掉远程进程,在卸载windows

C# 远程服务器 创建、修改、删除 应用程序池 网站

首先 C# 操作 站点 需要 引用Microsoft.Web.Administration.dll 文件,创建站点我们一般需要 远程服务的IP,网站名称.端口.物理路径:这里默认网站名称和应用程序池名称一致. 应用程序池默认不启动,应为刚创建站点是没有对应真实的物理文件,修改 队列长度.启动模式.回收时间.最大工作进程, 以及日志路径.修改的时候如果修改站点物理路径的话,我们需要把文件 从旧得目录拷贝到新的目录下,删除站点就比较简单了. 但是站点应用程序池的停止 和启动就比较难搞了,不是调用st