おっすー(U 'ᴗ' U)⑅ SONYKO 打油..°♡
三十日目、各位我成功了 ( 啪叽啪叽
今天要来讲 XHR post 跟补充相关知识、刚好是最近的学习目标 。
所以我也没有很强,我现在才要学 post
杂谈留到最後,来吧! 接招!
其实并不是每一个JSON 格式都给捞的。
举例:我找了一个 新竹补习班的OPEN DATA
今天一样用XHR 把资料抓下来:
const url ="https://ws.hsinchu.gov.tw/001/Upload/1/opendata/8774/8/439763a6-a05b-4c43-a76f-b40f4ca2c7a1.json"
const xhr = new XMLHttpRequest();
xhr.open ( 'get', url, true )
xhr.send(null)
xhr.onload = function(){
console.log(xhr.responseText)
}
殊不知我们得到... (Uㅎ_ㅎU)
为什麽他会跳出这个结果?
其实是因为这只 JSON 档没有开啓一个叫 CORS 的设定,没有打开它资源就没办法共享。
CORS ( 中文:跨来源资源共享 )
他是用来让网页的受限资源能够被其他域名的页面存取的一种机制 。
简单来说就是「是否可以跨网域捞资料」的机制。
什麽叫做跨网域?
看看这个 OPENDATA 的网址
const url = "https://ws.hsinchu.gov.tw/001/Upload/1/opendata/8774/8/439763a6-a05b-4c43-a76f-b40f4ca2c7a1.json"
只要前面网址为 https://ws.hsinchu.gov.tw/
的都是同一个网域哩。
同样的网域能互相分享资料、但我们不属於那个网域,因此没办法存取他的资料。
这个网站可以察看资料能不能使用 ( ◜ᴗ◝)
来讲讲表单。
大家都注册过帐号吧,如果有相同帐号的时候他就会提醒你说这个帐号被用过了。
其实就是因为我们输入帐号後,会透过 post 进行验证。
post 传送资料过去问他服务器资料库上有没有相同的帐号。
为了知道使用 post 是使用怎麽样的协定去做撰写的,
所以我们来讲讲传统表单吧。
大家有注意过上面的网址列吗?
假如我今天做一个 form 、里面包帐号密码输入框:
<form action="example.html">
帐号:
<input type="email" name="email">
<br>
密码:
<input type="password" name="password">
<br>
<input type="submit" value="送出">
</form>
按下送出後我们来观察网址列,会多出一串字:
// example.html?email=chenchenssssss%40gmail.com&password=aaaaaa
当按纽的 type 为 submit 时,就会将内容带进网址里做传递哩!
来讲解 post 的运作流程。
以 注册帐号 为例:
前端跟後端工程师合作时( 假如说你要新增帐号 )
会拿到一串网址,这个网址就是我们用来做验证用的。
他会告诉你应该提供怎麽样的格式,
当给他的内容可以使用、他就会回传一个物件给你。
// 举例他给的格式
{
email: '[email protected]',
password: '666666'
}
我们就按照这个格式传资料给後端。
後端接收到我们送的资料後,会回传讯息给我们:
// Success Response:
{
'success': true ,
'result': {},
'message': '注册帐号成功'
}
// Error Response:
{
'success': false ,
'result': {} ,
'message': '此帐号已被使用'
}
就来看看用 XHR 写 post 该怎麽写吧:
const xhr = new XMLHttpRequest();
const url = '你的网址' ;
xhr.open('post',url,true);
// post 最长使用的格式
xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
// send 括号内输入後端要求的格式
xhr.send("[email protected]&password=aaaaaa")
xhr.setRequestHeader('','')
参数代入你想 post 的格式 。
我们写 HTML 时不是都会加一行 <!DOCTYPE html>
,
来表示我们是要撰写 HTML5 的格式吗?
加上它网页才会看得懂我们是要用 HTML5 的格式去撰写 html 。
今天 post 东西也是一样、
我们要告诉对方:「 要传东西过去罗!格式是 __ 喔!」
xhr.setRequestHeader()
就是这个意思哩 ♫
那参数里面那个长到爆的格式,可以说是我们最常用的格式,
用来模拟我们传统表单输入的状况。
还记得讲解 get 资料的时候都是打 xhr.send(null)
吗?
然後我那时候说 send 里面的字是使用 post 时才会输入的。
就来看一下上面范例 send 括号里的内容吧 (U 'ᴗ' U)⑅
// 楼上程序码再打一次
xhr.send("[email protected]&password=aaaaaa")
你会发现,啊这不是刚刚传统表单讲的那个吗?!
嘿丢,记忆力真棒。 所以才突然插一个传统表单来讲w
括号里面就是要打那个东西。
刚刚贴过的,後端给我们的格式可能长酱:
{
email: '[email protected]',
password: '666666'
}
我们得把他转换为
// [email protected]&password=aaaaaa
再提醒一次: & 用来连接多个内容 !
来看看结果会长什麽样子吧!
可以看到系统回覆内容在 reponse 及 reponseText 的地方,
并且显示帐号注册成功哩 (U 'ᴗ' U)⑅
以上! 就是我们 API post 的流程 。
铁人赛 30 天完赛 (U 'ᴗ' U)⑅ 我要下去领500 了
不知道每个人打文章平均会花多久时间,
有人好奇我花多久时间吗w
我一天大概4 ~ 5 个小时吧( 是认真的 )
主要内容大概打4 ~ 5 小时、日文介绍另外计算。
但我还是觉得自己表现不是太好 ((
当然因为自己不是大大,
JavaScript 就跟我参赛简介打的一样,我还是新手,
常常会有订好一个题目想研究,但我就真他MD 看不懂的情形
我会跟自己说「 看不懂本来就是正常的,因为我还在路上 」
不用沮丧啊,真的都会的话,我干嘛学!
这边想鼓励一样和我在半路上的人,
学习的过程一定会有挫折,我觉得不需要否定自己。
你很棒啊,你很努力!
不然你怎麽会看到我这篇文章? 这麽棒的自己为什麽要否定,对吧?
每个人都有一开始、我们都只是刚开始而已
我们迟早会成长,总有一天可以看懂那个 现在可能还看不懂的东西。
所以 持续学习, 持续努力,去爱那个 每天努力学习的自己 (U 'ᴗ' U)⑅
以上!
谢谢你们观看我的文章。
这个 算是最後的彩蛋吧
就还是来认识一些单字吧 ♩
最後一天
就决定介绍大家最爱的日式英文发音。
CSS 属性英文念法 ヽ(•̀ω•́ )ゝ✧
音档
英 | 発音 |
---|---|
background | Ba kku gu ra un do |
color | Ka Ra |
font-size | Fon to Sai zu |
image | i Me-Ji |
position | Po ji Shon |
font-family | Fon to Fa mi li |
text-shadow | Te ki su to Sha dou |
vertical-align | Ba- ti ka ru A ra in |
column | Ka ra mu |
opacity | O pa shi ti |
inherit | in he ri tto |
margin | Ma- jin |
收工!
新零售行销模式案例,全通路时代来临该如何布局,一直以来都在担任辅导顾问为中小企业解决网路行销问题但都...
前言 昨天有谈到 Div 区块 是怎麽写出来的之後,今天就要来谈谈 CSS 什麽是 CSS ? 简单...
演算法评估 ### 演算法衡量 效率 渐进符号 EX:O(n) 最差案例 平均案例 平摊分析 问题衡...
今天是第二天!!我有记得发文,好耶~~那就直接来看看今天的内容吧~!(好突然) 个人认为在学习新技术...
首先要写 JavaScript 肯定要有编辑器,Visual Studio Code 是个好选择 再...