JSONP学习笔记

1. parseInt(n,10)

以10进制的方式把字符串n转换为整型

2. git 回到以前的状态

git log
git reset 7fagfgdfgdfgdsf --hard

3. 随机数

Math.random() > 0.5

4. 图片加载成功和图片加载失败

image是图片便签
image.onload = function(){
    加载成功就执行这里的代码
}
imgae.onerror = function(){}

5. 怎么刷新当前页面?

window.location.reload()

6. 怎么用图片发请求?

利用图片的src发送get请求,不过注意要返回一个真的图片


7. 通过script的src也可以发请求

不过要在body里面创建script标签,并且注意server.js里要写application/javascript。好处是不用发送一张图片。这个方案叫SRJ:server render JavaScript

8. 监听一个标签,成功加载后就删掉

label.onload = function(e){
    e.currentTarget.remove()
}

9. srj只能用get请求。

10. script的src可以向不同源的网站发送请求。

11. 为什么JSONP不支持POST方法?

  1. 因为JSONP的原理是通过动态地创建script标签来发送数据
  2. 我们动态创建script的时候只能用get,不能用POST

JSONP只支持GET请求,CORS支持所有类型的HTTP请求。JSONP的优势在于支持老式浏览器,以及可以向不支持CORS的网站请求数据。

12. 什么是jsonp

JSONP是服务器与客户端跨源通信的常用方法。
最大特点就是简单适用,老式浏览器全部支持,服务器改造非常小。
它的基本思想是,网页通过添加一个script元素,向服务器请求json数据,这种做法不受同源政策限制;服务器收到请求后,将数据放在一个指定的回调函数里传回来。

JSONP

请求方:frank.com 的前端程序员(浏览器)
响应方:jack.com 的后端程序员(服务器)

请求方创建 script,src 指向响应方,同时传一个查询参数 ?callbackName=yyy
响应方根据查询参数callbackName,构造形如yyy.call(undefined, '你要的数据')
yyy('你要的数据')这样的响应.
浏览器接收到响应,就会执行 yyy.call(undefined, '你要的数据')
那么请求方就知道了他要的数据
这就是 JSONP

约定:

callbackName -> callback
yyy -> 随机数 frank12312312312321325()
jQuery 用法

 $.ajax({
 url: "http://jack.com:8002/pay",
 dataType: "jsonp",
 success: function( response ) {
     if(response === 'success'){
     amount.innerText = amount.innerText - 1
     }
 }
 })

13.实现yjq.com向mayun.com发送请求


  1. 在yjq.com:8001处发送http://localhost:8002/pay请求
pay.addEventListener('click', function (e) {
            var script = document.createElement('script')
            document.body.appendChild(script)
            script.src = 'http://localhost:8002/pay'
            e.curretTarget.remove()
        })
  1. 在mayun.com的server.js处修改代码:
if(path === '/pay'){
            response.statusCode = 200
            var number = fs.readFileSync('./db','utf-8')
            var newNumber = number - 1
            fs.writeFileSync('./db',newNumber)
            response.setHeader('Conttent-Type','application/javascript')
            response.write(`
            alert('这是来自jmayun.com的代码')
            `)
            response.end()
  1. 最后开启两个server.js,成功接收到来自mayun.com的代码
    [图片上传失败...(image-ad72f6-1553065991823)]

14. 总结

前端一开始只能使用form表单向服务器发送请求,但后来发现用img标签的src也发送get请求,但用img发送请求还需要返回一张图片,因此又使用动态地创建script元素来发送请求,衍生出了JSONP。由于script标签的src是可以跨域的,因此jsonp发送的请求也是可以跨域发送,且对老式浏览器兼容。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 原始时代 在最早的时候,当我们需要向服务器提交请求时,用的是 表单提交到服务器,服务器接收到请求并且返回响应后,浏...
    Criya阅读 6,669评论 0 0
  • 1. JSONP的实现原理 JSONP是通过动态创建script实现的。请求方:frank.com 的前端程序员(...
    王童孟阅读 3,382评论 0 2
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,266评论 1 45
  • 请先了解:《阮一峰:浏览器同源政策及其规避方法》 注意:请首先更新之前用过的 nodejs-test 代码,否则会...
    格林姆大师阅读 3,184评论 0 0
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,872评论 1 32

友情链接更多精彩内容