作者小头像 Lv.2
138 成长值

个人介绍

这个人很懒,什么都没有留下

感兴趣或擅长的领域

暂无数据
个人勋章
TA还没获得勋章~
成长雷达
90
33
0
15
0

个人资料

个人介绍

这个人很懒,什么都没有留下

感兴趣或擅长的领域

暂无数据

达成规则

发布时间 2020/07/13 10:25:31 最后回复 blateyang 2020/08/20 23:20:02 版块 社区活动
32558 472 0
他的回复:
# 华为云ID:yxzking 第五章:ajax实战登录案例 #### 前端login.js ``` // alert("login") var btn = document.getElementById("btn"); var account = ''; var pwd = ''; btn.onclick = function() { account = document.getElementById('account').value; pwd = document.getElementById('pwd').value; ajax({ type: 'post', url: '/login', data: { account: account, pwd: pwd }, success: function(data) { alert(data) } }) } function ajax(opt) { var defaultParam = { type: 'get', url: '#', data: {}, aysnc: true, success: function() {} } for (var key in opt) { defaultParam[key] = opt[key]; } var xhr = null; if (window.XMLHttpRequest) { xhr = new XMLHttpRequest(); } else { xhr = new ActiveXObject('Microsoft.XMLHTTP'); } // 传入参数拼接 var paramStr = ""; for (var k in defaultParam.data) { paramStr += k + '=' + defaultParam.data[k] + '&'; } paramStr = paramStr.substr(0, paramStr.length - 1); console.log(paramStr); if (defaultParam.type == 'get') { xhr.open(defaultParam.type, defaultParam.url + '?' + paramStr, defaultParam.aysnc); xhr.send() } else { xhr.open(defaultParam.type, defaultParam.url, defaultParam.aysnc); //post xhr.setRequestHeader('Context-type', 'application/x-www-form-urlencoded'); xhr.send(paramStr) } xhr.onreadystatechage = function() { if (xhr.readyState == 4) { if (xhr.status == 200) { defaultParam.success(xhr.responseText); } } } } ``` 后端app.js ``` app.use(async function(ctx) { if (ctx.path == "/login") { if (ctx.request.body.account == 'zhou' && ctx.request.body.pwd == '123') { ctx.body = '登陆成功 !' } else { ctx.body = '登陆失败 !' } } }) ```
发布时间 2020/07/13 10:25:31 最后回复 blateyang 2020/08/20 23:20:02 版块 社区活动
32558 472 0
他的回复:
华为云ID:yxzking # 第四章 jQuery 中的 Ajax # jQuery介绍 jQuery是一个轻量级的"写的少,做的多"的JavaScript库。 - 官网:https://jquery.com - 宗旨:write less , do more - "$"美元符号 安装jquery并且引入 ``` koa2 jquery && npm install //安装jquery npm start // 启动 localhost:3000 // 浏览器访问 script(src='/javascripts/jquery-3.5.1.js') //在views中layout.pug中引入jquery库 ``` 在javascripts中创建jq.js 使用ready方法 ``` alert("我是jq") $(document).ready(function() { $("#name").html("classroom") }) ``` 如果把js代码放在前面 当 DOM(文档对象模型) 已经加载,并且页面(包括图像)已经完全呈现时,会发生 ready 事件。 该方法可以简写成 ``` $(function(){ }) ``` # get方法 - $.get(url, data, callback, type) - url是请求的接口地址 - data是请求参数 - callback是请求成功时的回调函数 - type是请求返回数据的格式 - 除了url,其他三个参数如果没有可以省略 #### 注意地方 - 请求参数的格式可以是json对象,也可以是字符串 - 返回的数据格式可以是:json, html, script, xml, Text等 # POST方法 - $.post(url, data , callback ,type) - post请求发出去的时候请求参数是放在请求体中 #### 二者区别:get安全性非常低,post安全性较高。但是执行效率却比Post方法好 #### 案例如下:通过Get请求从服务端获取js代码,js脚本变量在当前页面打印出来 在jq.js添加代码 发送get请求出去 ``` $(document).ready(function() { $("#name").html("classroom") $.get('/ajax', function() { console.log(huawei) }, 'script') }) ``` 服务端app.js代码 ``` app.use(async function(ctx) { if (ctx.path == '/ajax') { ctx.body = "var huawei = '华为云在线教育'" } }) ``` # jQuery中的ajax方法 #### ajax方法语法格式 - $.ajax(option) - option是JSON格式的配置参数,用于设置ajax请求 #### 常用配置有: - url:发送请求的地址, - type:请求方式(get和post), - data:请求参数, - dataType:返回的数据类型(JSON、html、xml)。 - success:请求成功后的回调函数, - error:请求失败后的回调函数, - complete:请求不论成功或者失败后返回的函数 #### 布尔类型的请求: - async:是否为异步, - cache:进行缓存, - timeout:请求超时时间(毫秒) #### 使用ajax方法打印 修改jq.js代码 ``` $.ajax({ url: '/ajax', //接口地址 dataType: 'script', //从服务器获取一段js代码 success: function() { // 回调 console.log(huawei); } }) ```
发布时间 2020/07/13 10:25:31 最后回复 blateyang 2020/08/20 23:20:02 版块 社区活动
32558 472 0
他的回复:
#### 华为云ID:yxzking #### 第三章:ajax揭秘 # 一、XMLHttpRequest #### 同步和异步 - synchronous 简称sync代表同步 > 同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。 - asynchronous 简称sync代表异步 > 异步方法调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用者就可以继续后续的操作。而,异步方法通常会在另外一个线程中,“真实”地执行着。整个过程,不会阻碍调用者的工作。 #### XMLHttpRequest (XHR) - 方法: - open 初始化 - send 发送 - setRequestHeader Content-type (发送请求如果是post要写此参数) - 属性 - onreadystatechange (状态发生变化触发属性) - readyState (XHR发送请求的几种状态) - status (http请求的状态码,如200是正常) - responseText (返回的结果) #### XHR使用 (四步走) - 1.创建XHR - 2.open初始化请求参数 - 3.send请求发送 - 4.onreadystatechange接收返回数据 四步走初始化框架: koa2---javascripts---创建ajax.js ``` var xhr = new XMLHttpRequest(); // 创建对象. xhr.open("get", "/ajax", true); // 初始化请求参数 1.请求方法 2.接口地址 3.true为异步 flase同步请求(可能造成阻塞) xhr.send() // 发送 xhr.onreadystatechange = function() { // onreadystatechange状态发生变化触发下面函数 } ``` # ajax的使用 - 四步走发送ajax请求 - open (method,url,async) 初始化 - sedRequestHeader("Content-type","application/x-www-form-urlencoded") post请求 的时候生效 - send(param) - readyState: 4 请求数据完整返回,参数可以使用 - status: 200 正常状态 koa2: 1.修改视图模板views---index.pug ```发送请求的ajax按钮发送请求按钮 ``` 2.引用js文件layout.pug ``` script(src='/javascripts/ajax.js') ``` # 跨域请求 跨域就是由于浏览器的同源策略,为了防范跨站脚本的攻击,禁止客户端脚本对不同域下的文档或脚本进行跨站调用资源 ##### 同源策略 协议名+主机名+端口号 ##### 跨域请求 - 跨域方法: JSONP, Proxy, iframe, CORS - 跨域的标签:srcipt (img, link)
发布时间 2020/07/13 10:25:31 最后回复 blateyang 2020/08/20 23:20:02 版块 社区活动
32558 472 0
他的回复:
#### 华为云ID:yxzking #### 第二章:node.js服务 # node.js Node.js 就是运行在服务端的 JavaScript的开放源代码、跨平台JavaScript运行环境 - 官网:https//nodejs.org - 定义:nodejs是一个基于chrome v8 引擎运行代码,单线程异步IO - 安装 (新版本的nodejs已经集成了npm) - NPM全称Node PackageManager,即node包管理器)是Node.js默认的、以JavaScript编写的包管理系统。 Wiki:https://zh.wikipedia.org/wiki/Npm ``` node 版本查询 E:\jsweb>node -v v11.13.0 npm 版本查询 E:\jsweb>npm -v 6.7.0 ``` # Koa框架 - koa框架是当前流行的nodejs后端框架之一 - koa小巧轻便 - koa采用插件式扩展,可以根据需要的功能来选用不同的插件 - koa 是下一代的 Node.js 的 Web 框架。由 Express 团队设计。旨在提供一个更小型、更富有表现力、更可靠的 Web 应用和 API 的开发基础。 #### 配置NPM第三方包安装源 NPM默认仓库在国外由于网络问题经常会不稳定或下载慢,VPN上网可以解决或者将安装源修改为国内优质镜像源 NPM的配置文件为用户根目录下的:~/.npmrc(Windows路径为:C:\Users\\.npmrc) ``` npm config set registry https://repo.huaweicloud.com/repository/npm/ npm cache clean -f ``` ## 安装koa 脚手架 ``` npm install koa-generator -g //安装koa koa2 ajax //使用koa2命令创建web项目 cd ajax && npm install //进去项目目录安装依赖包 nmp star //运行项目 create : ajax create : ajax/package.json create : ajax/app.js create : ajax/public create : ajax/routes create : ajax/routes/index.js create : ajax/routes/users.js create : ajax/views create : ajax/views/index.pug create : ajax/views/layout.pug create : ajax/views/error.pug create : ajax/bin create : ajax/bin/www create : ajax/public/javascripts create : ajax/public/images create : ajax/public/stylesheets create : ajax/public/stylesheets/style.css install dependencies: > cd ajax && npm install run the app: > SET DEBUG=koa* & npm start ajax ``` - 先搞清楚bin里的www为项目入口,通过它引入app.js配置内容。 - node_moudel为模块加载生成的文件夹,里面全是模块功能的源码。 - public公共文件夹,放一些样式、页面js逻辑、图片。 - routers路由,功能为分发请求。 - views为视图文件,jade是一个文本格式,其内容还可以是我们最熟悉的html。 - app.js和package.json是配置文件 ![1.jpg](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/31/230727r9lz1wquteh0jhow.jpg)
发布时间 2020/07/13 10:25:31 最后回复 blateyang 2020/08/20 23:20:02 版块 社区活动
32558 472 0