网络协会2017培训 恶补Web知识训练营 2017/4/7 – Payne.

Slides:



Advertisements
Similar presentations
●公司簡介. ●公司組織 行銷 企劃部 行銷 企劃部 研發 設計部 研發 設計部 視覺 設計部 視覺 設計部 媒體 製作部 媒體 製作部 行動 裝置部 行動 裝置部 執行長 總經理 管理部 本公司組織人力配置除董事長、執行長、總經理外,共 有六大部門,分別為研發部 6 人、管理部 4 人、視覺設計部.
Advertisements

Java Web 开发 授课人:张鸽. 第三讲 JSP 内置对象  JSP 有以下九种内置对象,包括:  ·request ,请求对象  ·response ,响应对象  ·pageContext ,页面上下文对象  ·session ,会话对象  ·application ,应用程序对象.
第 15 章 Mobile PHP 與 Ajax 15-1 Mobile PHP 15-2 Ajax 的基礎 15-2 Ajax 的基礎 15-3 jQuery 的 Ajax 方法 15-3 jQuery 的 Ajax 方法 15-4 應用實例:關鍵字建議清單 15-4 應用實例:關鍵字建議清單.
— 高级软件人才实作培训专家 ! 北京传智播客教育 ajax 讲师:韩顺平 qq:
1 网站设计理念 大连理工大学创新实验学院 优秀网站展示 - LAMP 类网站
Web app和html5给前端带来的变化 —— 我们的html5游戏平台之旅.
第14章 表单 在制作动态网页时,要实现信息交互,常常用到表单。 常见的表单有搜索表单、用户登录注册表单、调查表 单、留言簿表单等。本章节将和大家一起探讨在表单 的基本概念和各个元素,以及在Dreamweaver CS4中 如何创建表单,并通过实例掌握表单制作的方法。
互動表單的應用.
第六章 网页设计与制作基础.
聞一多詩集導讀-- 《死水》與《紅燭》 系級/組別:森資一 第五組
我的学习成果展示 德惠市第三中学 姜成立.
动态网站开发 【HTTP与网络基础】 李博杰
国家精品资源共享课的建设与经验共享 南京工业职业技术学院 郭晓晶.
移动校园Hybrid应用开发介绍 2015年11月.
事件驱动的移动数据中心 广州舜飞信息科技有限公司 谭荣棉.
信息技术教材基础模块整体介绍 (地图版) 天津市教研室 高淑印 西城区教育研修学院 张宗春.
湯明軒(Andrew) 秘書長 本簡報內容,如需引用請註明出處
姓名: 钱琬婷 学号: 0501W238 专业: 计算机科学与技术 指导教师: 陈家琪 教授
Web程序设计基础 太原理工大学 计算机科学与技术学院 林福平 求实创新
王寧疆 資深講師 資策會數位教育研究所 MCPD/MCT/MVP
P303 HTML/DHTML/CSS/JavaScript 專業HTML網頁設計 陳錦輝.
按按按高互動遙控教學系統.
《网页设计与制作》 教学课件 主讲人:湖南铁道职业技术学院 陈承欢
ES6简介.
14 JavaScript语言基础 JavaScript是一种轻量级、解释型的Web开发语言。所谓轻量级,就是语言的体系结构不是很庞杂,例如,没有C、Java等语言中的类、内存管理、系统管理等高深的知识范畴;所谓解释型,就是语言在浏览器或服务器等环境中直接被解释执行,不需要对源代码进行编译操作。
第三章 使用XMLHttpRequest对象
Html5在移动互联网项目的应用 主讲人:曲毅
数据访问页.
基于hadoop与hive的大数据分析体系构建
5.1 – 表格(FORM) 輸入元素 : 兩種傳遞方法 : GET or POST 範例 1. 文字欄位 Text box
第3章 超文本标记语言(HTML) 3.1 基本结构标记 3.2 文本格式标记 3.3 超链接标记<A></A>
网络协会2017培训 Node.js专题 (1) 2017/3/12 – Payne.
Universal Media Player
中央研究院 環境教育終身學習網 成果登入說明 整批上傳學員(未開班).
DhtmlXGrid表格显示控件简介.
Ajax编程技术 第一章 Ajax简介.
AJAX基础.
恶补Web知识训练营 (2) 2017/4/14 – Payne
JavaScript 语言3 学习网站:心蕊设计
PHP+MySQL互動式網頁程式設計班 檔案上傳程式設計 講師:林業峻 CSIE, NTU 7 / 3, 2010.
HTML5简介 WEB前端三剑客之一.
JavaScript 靜宜大學 資管系 楊子青.
复习 JavaScript && ES6 专题 (1) 2017/3/10 – Payne
All rights reserved by Copyright All rights reserved by
校外人员酬金申报流程  .
Web Crack 专题 – AJAX – 2016/11/18 – Payne 本次培训仅供教学内部用途 实验请遵守相关法律法规
网 站 设 计 与 建 设 Website design and developments
WEB统一检索本地整合技术 中国农业大学图书馆 康实.
A New Kind of JavaScript Library
透過YouTuBe API取得資料 建國科技大學 資管系 饒瑞佶 2018/1 V1.
Ajax编程技术 第六章 调试与错误处理.
站群系统管理平台简介 网教中心 2014年10月29日.
JavaScript Sunxiaoshen.
C# 基本語法、變數.
網站HOLMES DATA監測代碼.
Node.js专题 (2) 做一个留言板 2017/3/24 – Payne
本學期資訊系統開發專案之技術架構.
W3C标准网页制作 主讲教师:张 涛.
网 站 设 计 与 建 设 Website design and developments
第6章 PHP的数据采集.
Unity回傳統計資訊程式說明: 填寫回傳資訊網址(theUrl)。
Javascript 基础 面向非JS语言的开发人员.
企業籌資更便捷 大眾投資更穩當 新版公開資訊觀測站操作介紹 2013年10月.
進貨管理介接更動 有關「匯入進貨資料」傳,請注意「上游業者出貨單號」,上游業者出貨單號要配合「匯出上游出貨資料」中的「出貨單號」或是「自有系統上傳的出貨單號」。 Ø  若「自有系統上傳的出貨單號」有值,則「匯入進貨資料」中的「上游業者出貨單號」就要key入「匯出上游出貨資料」中的「自有系統上傳的出貨單號」。
臺北市99學年度 輔導分發選習國民中學技藝教育學程 就讀高中職實用技能學程宣導說明會
Access应用 数据库基础 与.
大数据应用人才培养系列教材 数据清洗 刘 鹏 张 燕 总主编 李法平 主编 陈潇潇 副主编.
認識 Excel 與SPSS.
JavaScript 教师:魏小迪
表单页面 表单是用户利用浏览器对Web站点网络数据库进行查询的一种界面,用户利用表单可以输入信息或选择选项等,然后将这些信息提交给服务器进行处理。通过表单,既可以将浏览器的信息发送到Internet服务器上,同时表单也可以使用户与站点的浏览者交互或从浏览者那里收集信息。它是网页的设计者和使用者相互交流的工具。表单对象包括文本域(单行、多行、密码)、列表、菜单、复选框、单选框、按钮等。
Presentation transcript:

网络协会2017培训 恶补Web知识训练营 2017/4/7 – Payne

简要内容 1. 数据文件格式:XML 与 JSON 2. AJAX 与 Fetch 3. 跨域问题与对策

小问题 给你一个Excel表单,你会怎么存储? 怎么在网页上面调用?

小问题 小明的水果摊仓库登记 登记日期 2017/4/7 登记人 小华 货品号 类型 货品名 货品数目 备注 1 水果 苹果 斤 3 雪梨 登记日期 2017/4/7 登记人 小华 货品号 类型 货品名 货品数目 备注 1 水果 苹果 斤 3 雪梨 4 饮料 香蕉牛奶 666 9 小吃 终极鱿鱼 233

可以选择的技术 CSV 文本 XML JSON

XML 可扩展标记语言(XML),是一种标记语言。通过此种标记,计算 机之间可以处理包含各种信息的文章等。 如何定义这些标记,既可以选择国际通用的标记语言,比如HTML, 也可以使用像XML这样由相关人士自由决定的标记语言,这就是语 言的可扩展性。 它主要用到的有可扩展标记语言、可扩展样式语言(XSL)、XBRL 和XPath等。

XML文件样例 <?xml version="1.0" encoding="UTF-8" ?> <name>Payne</name> <age>18</age> <gender>male</gender> <online>true</online> <keywords>nice</keywords> <keywords>humor</keywords>

XML常见场景 RSS XPath As a config file (Android) Flash: CrossDomain.xml

XML优点 XML的结构类似于HTML,而且原生的浏览器支持解析XML结构 (即便是IE6也支持) 属性名多样,无缝支持各种编码的文本甚至二进制数据

XML缺点 XML的结构导致数据存储文件太大 不能很好描述key-value里的value的类型 元素重复冗余,不易读

JSON JSON(JavaScript Object Notation)是一种由道格拉斯·克罗克 福特构想设计、轻量级的数据交换语言,以文字为基础,且易于让 人阅读。 虽JSON是Javascript的一个子集,但JSON是独立于语言的文本格 式。 JSON可以与JavaScript可以“无缝对接”而且非常多的编程语言支 持JSON的解析。

JSON文件样例 { "name":"Payne", "age":18, "gender":"male", "online":true, "keywords":["nice", "humor"] }

JSON的语法标准 Document: http://www.json.org/json-zh.html ECMA-404: http://www.ecma- international.org/publications/files/ECMA- ST/ECMA-404.pdf

JSON常见场景 AJAX对接Web服务器接口 Node.js 配置文件 MongoDB的文档

JSON优点 文件结构清晰,冗余标记少,易于阅读 属于JavaScript的子集,利于网页调用 (JSON.parse) 支持预设定的value类型

JSON缺点 古老的浏览器(IE6之流)无法安全解析JSON

JSON在浏览器的安全使用 解析JSON文件(字符串对象): JSON.parse() 将JS的对象转成JSON文件(对象字符串): JSON.stringify()

JSON在古老浏览器的安全使用 JSON2: https://github.com/douglascrockford/JSON-js/ (基本很少人用了)

传统的网页与服务器交互 通过提交(Submit)表单(Form)实现向服务器 POST数据,每一次提交表单都返回结果的网页。 它的缺点是什么?

无刷新的网页与服务器交互 AJAX——综合了多项技术的浏览器端网页开发技术。 AJAX应用可以仅向服务器发送并取回必须的数据,并在客户端采 用JavaScript处理来自服务器的回应。因为在服务器和浏览器之间 交换的数据大量减少,服务器回应更快了。 同时,很多的处理工作可以在发出请求的客户端机器上完成,因此 Web服务器的负荷也减少了。

常见场景 进入一个新闻网站,只需要手指往下拉网页,网页就会 自动加载下一页的内容,而且不需要跳转; 登录网站失败,用户的密码还在,不需要再重新输入密 码(想想提交表单要怎么做); 股票数据每隔5秒更新一次,会根据最新的指数画出K线 图……

实现AJAX——XMLHttpRequest

XMLHttpRequest 原生用法 var xhr = new XMLHttpRequest(); xhr.open('POST', '/data/music/songlink'); xhr.setRequestHeader('Content-Type', 'application/x-www-form- urlencoded; charset=UTF-8'); xhr.onload = function() {console.log(JSON.parse(xhr.response))} //输出解析之后的JSON对象 xhr.send('songIds=2075791&hq=0&type=m4a%2Cmp3');

XMLHttpRequest 在jQuery 使用 jQuery的 .get(), .post() 方法可以轻松实现XHR发送和接收数 据报文。 $.post( "test.php", { name: "John", time: "2pm" } ) .done(function( data ) { alert( "Data Loaded: " + data ); });

Fetch XMLHttpRequest 是一个设计粗糙的 API,不符合关注分离 (Separation of Concerns)的原则。配置和调用方式非常混乱, 而且基于事件的异步模型写起来也没有现代的 Promise, generator/yield,async/await 友好。 Fetch 的出现就是为了解决 XHR 的问题。 Fetch可以看成是Promise版本的XHR(原生仅限ES6)。

Fetch用法 fetch(url).then(function(response) { return response.json(); // 读入一个JSON文件 }).then(function(data) { console.log(data); }).catch(function(e) { console.log("Oops, error"); });

带上箭头函数 fetch(url).then(response => response.json()) .then(data => console.log(data)) .catch(e => console.log("Oops, error", e))

用 async/await try { let response = await fetch(url); let data = response.json(); console.log(data); } catch(e) { console.log("Oops, error", e); }

Fetch POST数据 fetch("http://www.example.org/submit.php", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: "firstName=Nikhil&favColor=blue&password=easytoguess" }).then(function(res) { alert("Perfect! Your settings are saved."); }, function(e) { alert("Error submitting form!"); });

Fetch 优点 简单粗暴,简洁明了 更佳语义化 配合Promise + async/await,原生异步事件同步 不是梦

Fetch 缺点 只有 >= ES6 才支持,需要 ES7才支持 async/await写 法(whatwg-fetch可以拯救地球) 新学的同学需要熟悉Promise的结构

跨域是什么? 跨域一般指的是浏览器中的JavaScript通过AJAX技 术访问不是同源的网站的文件。 当然,Flash也是存在跨域限制,用于避免非法的 Flash文件任意访问其他网站的数据。

跨域的意义? 避免我自己的网站的数据可以被其他网站调用。 例如: 我知道百度的接口,而且它允许跨域,我就可以不 借助自己的服务器随意调用百度的数据。这样会给 百度带来经济损失(小偷可以零成本)。甚至伪装 百度欺骗萌新。

同源的要求 两个URL的协议相同 两个URL的域名相同 两个URL的端口相同 只要其中一个不符合,则意味着不同源,需要跨域

看看它们是否同源 http://baidu.com  https://baidu.com http://baidu.com:8080  http://baidu.com http://api.taobao.com  http://api.jd.com https://admin@scnu.edu.cn  https://scnu.edu.cn

常用跨域的方法 CORS JSONP WebSocket 转发(反向代理)

CORS Access-Control-Allow-Origin 协议头设定允许同源的域 名 res.header('Access-Control-Allow-Origin', '*') res.header('Access-Control-Allow-Origin', 'https://sso.scnu.edu.cn')

JSONP 构造一个JavaScript的脚本,通过加载脚本(GET方法)的 形式加载封装了待返回数据的函数。只需要执行函数就可 以获取里面的数据。 res.jsonp({'name':'Payne'})

WebSocket HTML5的WebSocket是在浏览器支持长时间连接的 解决方案,其不受跨域影响。 但是需要搭建一个WS服务器,比较麻烦。 主要用于手游、页游、弹幕服务器。

反向代理 需要自己的服务器反向代理需要跨域的网站。 只需要反代到需要使用的网站上即可。 但是需要额外花费资金于服务器的购置、部署。