美文网首页
什么是JSONP

什么是JSONP

作者: 易景平 | 来源:发表于2021-02-14 10:40 被阅读0次

什么是JSONP

  1. 请求方动态创建script标签,src指向响应方,同时传一个查询参数 ?callbackName=xxx
  2. 响应方根据查询参数构造如:xxx.call(undefined,'你要的数据')这样的响应
  3. 浏览器接收到响应,就会执行xxx.call(undefined,'数据')
    这就是JSONP

行业约定:

  • callbackName ==> callback
  • xxx ==>随机数 比如:jp128884
let functionName= 'jp' + parseInt(Math.radom() * 10000)
window[functionName] = function(){}
delete window[radomName] //使用完后干掉这个函数,下次使用会生成新的

后端不需要知道前端的具体细节
后端返回主要数据若为一个JSON,JSON的左边为回调函数部分,右边为).即左边一个padding,右边一个padding,,JSON + padding =JSONP

这个技术的名字起的很烂!!
换个好理解的名字可以称之为: 动态标签跨域请求

  1. 原生代码实现JSONP
        let script = document.createElement('script')
        let functionName = 'jp' + parseInt(Math.random() * 10000,10)
        script.src = '/pay?callback=' + functionName
        window[functionName] = function(response){
            console.log('收到数据为:' + response)
            amount.innerText = amount.innerText - 1
            delete window[functionName]
        }
        document.body.appendChild(script)
        script.onload = function(e){
            e.currentTarget.remove()
        }
  1. jQuery实现JSONP
$.ajax({
    url: "http://query.yahooapis.com/v1/public/yql",
 
    // The name of the callback parameter, as specified by the YQL service
    jsonp: "callback",
 
    // Tell jQuery we're expecting JSONP
    dataType: "jsonp",
 
    // Tell YQL what we want and that we want JSON
    data: {
        q: "select title,abstract,url from search.news where query=\"cat\"",
        format: "json"
    },
 
    // Work with the response
    success: function( response ) {
        console.log( response ); // server response
    }
});

jQuery里把JSONP放在AJAX里面,但实际上JSONP和AJAX没有关系。

相关文章

  • javasscript - 收藏集 - 掘金

    jsonp 跨域请求详解——从繁至简 - 前端 - 掘金什么是jsonp?为什么要用jsonp?JSONP(JSO...

  • Java高级技术day84:JsonP和HttpClient

    一、Jsonp的简介 1.什么是 JsonP? Jsonp(JSON with Padding) 是 json 的...

  • Jsonp学习笔记

    一、Jsonp简介 1.什么是Jsonp Jsonp(JSON with Padding)是json的一种“使用模...

  • 对jsonp 的理解认识

    什么是跨域?为什么要跨域呢?听说jsonp能. 为什么jsonp能跨域呢?什么时候使用jsonp?怎么使用json...

  • 什么是JSONP

    JSONP就是一个对象,有左padding和右padding,对象里的key要加双引号(符合JSON语法),这个对...

  • 什么是JSONP

    这篇文章写的很容易理解,mark一下 原文地址: http://www.cnblogs.com/dowinning...

  • 什么是JSONP

    概念 JSONP全称JSON with Padding,是一种跨域请求资源的方法。 利用HTML的script标签...

  • 什么是jsonp

    先来看一个简单的例子 上面这段代码在body中创建了一个script标签,script的src属性指向本地的一个p...

  • 什么是JSONP?

    到底什么是JSONP?它和JSON到底有什么关系?这是我碰到JSONP时脑海里的浮现的第一个问题。先看看维基百科上...

  • 什么是JSONP

    什么是JSONP 请求方动态创建script标签,src指向响应方,同时传一个查询参数 ?callbackName...

网友评论

      本文标题:什么是JSONP

      本文链接:https://www.haomeiwen.com/subject/wtlyxltx.html