【Ajax】笔记-jsonp实现原理

news2024/9/24 21:24:21

JSONP

  1. JSONP是什么
    JSONP(JSON With Padding),是一个非官方的跨域解决方案,纯粹凭借程序员的聪明才智开发出来的,只支持get请求。
  2. JSONP 怎么工作的?
    在网页有一些标签天生具有跨域能力,比如:img link iframe script.
    JSONP就是利用Script标签的跨域能力来发送请求的
  3. JSONP的使用
    1. 动态的创建一个script标签
      var script=document.createElement(“script”);
    2. 设置script 的src,设置回调函数
script.src = "http://localhost:3000/testAJAX?callback=abc";
function abc(data) {
alert(data.name);
}
3. 将script 添加到body中
  document.body.appendChild(script);
 4.服务器中路由的处理
router.get("/testAJAX" , function (req , res) {
console.log("收到请求");
var callback = req.query.callback;
var obj = {
name:"孙悟空", age:18
}
res.send(callback+"("+JSON.stringify(obj)+")");
});

案例分析

html:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>原理演示</title>
    <style>
        #result {
            width: 300px;
            height: 100px;
            border: solid 1px #78a;
        }
    </style>
</head>

<body>
    <div id="result"></div>
    <script>
        //处理数据
        function handle(data) {
            //获取 result 元素
            const result = document.getElementById('result');
            result.innerHTML = data.name;
        }
    </script>
    <!-- <script src="http://127.0.0.1:5500/%E8%AF%BE%E5%A0%82/%E4%BB%A3%E7%A0%81/7-%E8%B7%A8%E5%9F%9F/2-JSONP/js/app.js"></script> -->
    <script src="http://127.0.0.1:8000/jsonp-server"></script>
</body>

</html>

server:

//jsonp服务
app.all('/jsonp-server',(request, response) => {
    // response.send('console.log("hello jsonp")');
    const data = {
        name: '德仔dezai'
    };
    //将数据转化为字符串
    let str = JSON.stringify(data);
    //返回结果
    response.end(`handle(${str})`);
    
});

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/796921.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为什么说RL 是强化学习的技巧?

一、说明 深度学习&#xff08;DL&#xff09;很难训练&#xff0c;强化学习&#xff08;RL&#xff09;要更难。在早期开发中&#xff0c;遵循与 DL 相同的策略&#xff1a;保持简单&#xff01;消除任何妨碍您的花里胡哨的东西&#xff0c;并将不确定性降至最低。 具体到RL&a…

利用spss进行因子筛选相关性分析

因变量放在前面&#xff0c;其他的变量全部导入即可 点击确定得到结果 两个星**表示相关性显著&#xff0c;*一颗星次之&#xff0c;一般我们选择两个星的变量&#xff0c;进行后续的建模

新能源电动汽车交流充电桩控制主板的配置

新能源电动汽车充电桩控制主板的配置 你是否曾经遇到过充电桩无法兼容你的电动车&#xff0c;或者充电速度慢如蜗牛?原来是充电桩主板的配置问题! 充电桩主板是充电桩控制系统的核心&#xff0c;它的配置决定了充电桩的性能和兼容性。 首先&#xff0c;处理器是充电桩主板的核…

Selenium+Java环境搭建(测试系列6)

目录 前言&#xff1a; 1.浏览器 1.1下载Chrome浏览器 1.2查看Chrome浏览器版本 1.3下载Chrome浏览器的驱动 2.配置系统环境变量path 3.验证是否成功 4.出现的问题 结束语&#xff1a; 前言&#xff1a; 这节中小编给大家讲解一下有关于Selenium Java环境的搭建&…

关于position:fixed定位的位置不对的问题(即没有按照浏览器的窗口进行定位)

问题&#xff1a; 今天在开发过程中发现元素使用 position: fixed 时位置有问题&#xff0c;位置跟我写的位置对不上&#xff0c;后面在 MDN 上面找到了答案&#xff0c;下面是关于 position: fixed 的描述&#xff1a; fixed&#xff1a; 元素会被移出正常文档流&#xff0c;并…

多组输入字符,每一次都判断这个字符是否为字母

首先多组输入&#xff0c;就要用到循环 然后是输入字符&#xff0c;用函数getchar() 又因为getchar()输入的字符后面有还有一个‘\0’&#xff0c;所以代码的最后还应该单独写一个getchar&#xff08;&#xff09;函数来把\0处理了 代码&#xff1a; int main() {int ch 0;wh…

图表的使用

<template><!-- 外层 --><div><!-- 上面 --><header><!-- 上面item --><div class"fl"><div class"leftimg"><img src"../../assets/orders.png" width"50px" alt /></div&…

【建议收藏】Kubernetes 网络策略入门:概念、示例和最佳实践,附云原生资料

目录 摘要 一、Kubernetes 网络策略组件 二、实施网络策略 示例 1&#xff1a;在命名空间中限制流量 示例 2&#xff1a;允许特定 Pod 的流量 示例 3&#xff1a;在单个策略中组合入站和出站规则 示例 4&#xff1a;阻止对特定 IP 范围的出站流量 三、Kubernetes 网络策…

Lua脚本解决多条命令原子性问题

Redis是一个流行的键值存储数据库&#xff0c;它提供了丰富的功能和命令。在Redis中&#xff0c;我们可以使用Lua脚本来编写多条命令&#xff0c;以确保这些命令的原子性执行。Lua是一种简单易学的编程语言&#xff0c;下面将介绍如何使用Redis提供的调用函数来操作Redis并保证…

redis中使用bloomfilter判断元素是否存在

一 bloomfiler的作用 1.1 bloomfilter的作用 由一个初始值为0的bit数组组成&#xff0c;和多个hash函数构成&#xff0c;用来判断集合中是否存在某个元素。 一个很长的二进制数组&#xff08;00000000&#xff09;一系列随机hash算法映射函数。主要用于判断一个元素是否存在…

【产品应用】一体化伺服电机在激光雷达设备中的应用

激光雷达作为一种重要的感知技术&#xff0c;被广泛应用于气象探测、追踪、机器人导航、风力资源等领域。而在激光雷达设备中&#xff0c;一体化伺服电机的应用正发挥着重要的作用。本文将介绍一体化伺服电机在激光雷达设备应用中的优势&#xff0c;展示其对激光雷达技术发展的…

四.在 Linux 上以 All-in-One 模式安装 KubeSphere

1.初始操作 # 关闭防火墙 systemctl stop firewalld systemctl disable firewalld# 关闭selinux sed -i s/enforcing/disabled/ /etc/selinux/config # 永久 setenforce 0 # 临时# 关闭swap swapoff -a # 临时 sed -ri s/.*swap.*/#&/ /etc/fstab # 永久# 将桥接的I…

2023河南萌新联赛第(三)场:郑州大学 F

把题中所给的式子进行展开&#xff0c;最终可以得到一个等比数列。运用等比数列求和公式即可。 相关知识点&#xff1a;欧拉降幂&#xff0c;逆元。 逆元的用处&#xff1a;因为求和公式需要去除分子&#xff0c;而大数除法去取模会丢失精度&#xff0c;所以可以采用求出分子…

深度学习入门教程(1):用神经网络预测糖尿病病例Predict Diabetes Cases with Neural Networks

本深度学习入门教程是在polyu HPCStudio 启发以及资源支持下进行的&#xff0c;在此也感谢polyu以及提供支持的老师。 大纲&#xff08;what will you learn from this project&#xff09; 1&#xff1a;What are neural networks&#xff1f; 2&#xff1a;Why use neural …

Ubuntu /dev/loop<0..n>挂载的目录的分析

执行命令df -h lkmaoubuntu:~$ df -h Filesystem Size Used Avail Use% Mounted on udev 1.6G 0 1.6G 0% /dev tmpfs 391M 2.1M 389M 1% /run /dev/sda1 59G 30G 26G 54% / tmpfs 2.0G 0 2.0G 0% /dev/s…

华硕PN62:BIOS来电重启 和win10关闭升级Windows11提示方法

1&#xff0c;开机长按del键进bios设置界面&#xff0c;点高级—电源管理或APM Restore AC Power Loss有两个都选power on。如果不成功&#xff0c;检查主板上纽扣电池是否有电。 restore on ac power loss意思是“交流失电恢复”&#xff0c;这是BIOS里的电源管理选项&#xf…

【Python机器学习】实验04(1) 多分类(基于逻辑回归)实践

文章目录 多分类以及机器学习实践如何对多个类别进行分类1.1 数据的预处理1.2 训练数据的准备1.3 定义假设函数&#xff0c;代价函数&#xff0c;梯度下降算法&#xff08;从实验3复制过来&#xff09;1.4 调用梯度下降算法来学习三个分类模型的参数1.5 利用模型进行预测1.6 评…

volatile关键字(轻量级锁)

目录 一、volatile出现背景 二、JMM概述 2.1、JMM的规定 三、volatile的特性 3.1、可见性 3.1.1、举例说明 3.1.2、总结 3.2、无法保证原子性 3.2.1、举例说明 3.2.2、分析 3.2.3、使用volatile对原子性测试 3.2.4、使用锁机制 3.2.5、总结 3.3、禁止指令重排序 四、v…

【KO】vite使用 git bash here创建vue3项目时方向键失败!

文章目录 起因过程结果 起因 今天使用vite创建ue3项目&#xff0c;因为git使用习惯了就直接用git运行创建命令&#xff0c;前两步都没啥问题&#xff0c;到选择框架的时候问题来了&#xff0c;方向键无效。如图&#xff1a; 过程 常理来说是直接用方向键↑和↓进行选择&…

day15-239. 滑动窗口最大值

239. 滑动窗口最大值 力扣题目链接(opens new window) 给定一个数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值。 进阶&#xff1a; 你能…