网上支付逻辑

1.浏览器是一段代码,程序写的一个电脑应用/服务器也是一段代码,程序写的一个电脑应用
2.在浏览器这个电脑应用上,有一个输入栏功能,在它的输入栏里面写一串符合http协议的字串,也就是俗称的网址,这个应用就会向远在他方的另外一台电脑上的一个叫服务器的应用(本质上就是一串代码)要数据
3.远在他方的这个电脑应用(服务器),响应你的要求,给你数据
4.浏览器就把这些获得的数据根据html,css,JavaScript语法把一些毫无意义的字符串变成一个好看的页面(俗称网页)
// 上面的说的告诉我们一个道理,就是所有的代码都是在服务器上的,浏览器要渲染的页面代码是服务器上存的,响应浏览器的功能的实现也是服务器这个电脑应用做的,这些服务器响应代码也是在服务器那边的


网上支付的实现逻辑

1.页面得有一个好看的页面,还有各种支付按钮,还可以增减相应的金额,正确显示和操作'余额'
2.对于计算机来说,一切都是数据,不过数据也分很多种类型,不管怎样,计算机什么都不认识,就知道指令和数据
3.所以一个网页上面可以操作的'余额'对于人类而言是存在银行里面的钱,对于计算机来说就是一个number类型的数据,而且可以被操作控制,那么它就不是真正意义上的钱
4那我们如何做到让他变成真正的钱呢?这时候数据库的作用体现出来了,在互联网世界,所谓的钱就是number数据类型,我们在服务器后面做一个数据库,让浏览器上显示的'余额'的改变,记录在数据库上,然后让数据库上的数据和现实世界银行里面的存款同步,那么我们就实现了网络支付了,页面上的余额就变成真正意义上的钱了


SRJ

  • 浏览器请求,请求的是html,用它来渲染页面,有没有想过,让服务器返回JavaScript代码呢?
  • 我们为什么要让服务器返回JavaScript呢?因为:
    用 form 可以发请求,但是会刷新页面或新开页面
    用 a 可以发 get 请求,但是也会刷新页面或新开页面
    用 img 可以发 get 请求,但是只能以图片的形式展示
    用 link 可以发 get 请求,但是只能以 CSS、favicon 的形式展示
    //也就是说用script发送请求,利用返回的JavaScript并且执行,能给用户更好的体验,这就是SRJ技术发明出来的原因
  • 为什么要让后端返回前端代码呢?
    //浏览器上的页面(前端代码)上的'余额'变化,是不是要用到JavaScript代码?例如简单地让页面上的数字,点一个按钮之后'余额'减去100块,刚才我们提到让后台服务器做一个数据库,并且让数据库和银行的数据库上的客户余额number同步,就实现了网上钱的同步,可是这仅仅是后端服务器数据同步了啊,一个客户怎么知道自己的钱还剩下多少?打电话去问京东商城的后台服务器程序员吗??? 是不是智障?
    //最简单的做法就是改变前端代码,让使用浏览器上的客户第一眼就能看见余额发生了变化.所以后端不单单做后台服务器数据库同步的工作,还要返回一串JavaScript代码操作页面,使得在浏览页面的客户知道自己的余额发生了哪些变化,还剩下多少钱
    //简单来说,前端要知道'余额'真实的数据,这就得去请求后端服务器,取得真正的数据之后,不管是否成功取到数据都要进行下一步操作,成功就改变页面上的余额,不成功就得告诉客户什么原因买东西不成功
    //简单来说前端请求后端数据的之后,要改动前端代码直观反映信息,给正在使用的客户
    //而前端用到的就是JavaScript代码
    //所以要用到SRJ技术

狗牙

//世界之大,无奇不有,在南太平洋某个小岛上,这个小岛上的人用狗牙当做货币,用10个狗牙就可以娶媳妇
//对于中国人来说,狗牙就是普通的狗牙,对于那个小岛上的人而言,狗牙就是财富
在计算机的世界里,服务器响应文的第四部分,响应浏览器返回的就是一堆字符串,无论这些字符串按照json/xml/JavaScript/html/css...语法来写,对于服务器来说这些数据的类型就是string(中国人的狗牙)
//可是对于获得这些数据的浏览器来说,这些不是普通的string,而是符合html/css/JavaScript....语法的代码(南太平洋小岛的货币,是财富)
//结论是:在计算机的领域里,一切都是指令+数据,其中数据的类型就是重中之重,所以学编程,要有数据类型思维,数据类型的转换对于编程来说是十分重要的


jsonp

什么是jsonp?//就是跨域的SRJ

  • 利用script标签,跨域请求别人家的服务器数据
  • 为什么要请求别人家的服务器数据?
    //网上支付的实现,使得我们的财富变成了互联网上的一串数据,现实中的钱在银行,银行有自己的电脑系统,他有自己的服务器,如果我们在京东买东西,京东上的余额现实剩下一个亿人民币,然后在上面买东西,一顿青铜操作猛如虎,花了五千万,'余额'数据变成了50000000,请问最后这个余额五千万,是在京东商城的后台服务器上吗? 当然不是,是在银行的服务器上,那么你的浏览器页面上的这个五千万余额数字,请求的当然不是京东的服务器的数据库而是银行的服务器上的数据库里面的数据,所以要跨域请求数据,所以jsonp出现了
  • 那么一个巨大的问题来了?
    //一家互联网公司,不管前端后端,代码都在自己家的服务器上,所以前端要操作的JavaScript代码后端可以写,还能返回给自己家前端,也就是说前后端代码存在很严重的耦合问题,后端要非常了解前端代码的细节,才能顺利地返回前端要求的JavaScript函数代码
    //可是我现在请求别人家的后台数据啊,访问的是别人家的服务器代码,本公司的前端和别人家公司的后端,压根不认识啊,何况两个公司的代码,能让你知道吗?咋办?
  • 在这个伟大的时刻就是callbackName登场的时候了
    //怎么解决跨域请求数据,并且正确反映在页面上?
    //办法就是让页面会变化的代码,让前端自己写好,跨域去请求别人家的服务器,获得数据之后,不要让别人家的后端来返回操作页面的代码了,让前端和后端的代码解耦,分离.
    // 具体的实现办法就是,行业默认这些前端获得数据后,要改变页面的代码,通通让前端来写好,并且统一名字叫'独一无二'然后让这个'独一无二'赋值给callbackName,前端利用?callbackName='独一无二',在请求的时候告诉别人家的后端,要改变页面的代码我自己写好了,你如果让我请求到数据之后顺便运行这个叫callbackName的函数把!!
  • 有一个小细节,调用代码在后端已经写完,因为使用的script src所以,后端的代码成功响应的那一刻,页面上的JavaScript会马上执行,前端代码就不用再写调用代码了

京东商城的前端,请求银行后台服务器的数据,会成功,也会失败.不是说请求就必定成功的

//所以前端改变页面的代码,可以先定义好但是不能马上执行,因为执行就意味着支付成功了,余额改变了,可是究竟成不成功是需要银行后台告诉你的啊,这个函数只能是成功之后执行的啊,不然你的页面上的余额number这个数据就和银行的不同步了

所以前端可以定义支付操作的结果的JavaScript代码,但是不能执行,什么时候执行?让后端执行,因为后端知道你数据请求是否成功,成功就在响应报文第四部分写上执行函数,如果不成功就执行不成功的函数

简单来说就是定义方封装函数,使用方调用函数

很多事情就通了

  • 异步就是不按照JavaScript顺序一行行执行代码,因为不是同步所以叫异步
  • 回调函数就是不自己调用,让别人帮你调用这个函数
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,692评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,482评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,995评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,223评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,245评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,208评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,091评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,929评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,346评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,570评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,739评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,437评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,037评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,677评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,833评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,760评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,647评论 2 354

推荐阅读更多精彩内容