title: jsonp详解

tags:

categories:

ajax不允许跨域获取数据

说明,假定后端语言是 PHP

script标签

jsonp的原理:script标签具有跨域性,可以利用Script标签的src属性发送跨域请求,获取相应数据

// 回调函数

function fnName(data){

console.log(data);

}

后端返回的是js代码,是函数调用

echo $fnName.'(hello world)';

?>

jQuery-jsonp

type必须是get

$.ajax({

url: "域名/域名下的php文件名",

dataType: "jsonp",

jsonp: "callbackName", // 约定等号左边的key,服务器根据该名称获取回调函数名称

jsonpCallback: "fnName", // 约定等号右边的value,标识回调函数名称

success: function(){

// todo

},

error: function(){

// todo

}

})

模仿封装jQuery-ajax

function myAjax(options) {

// 默认值

var defaults = {

jsonp: "callback",

jsopCallback: "jQuery"+ ('v3.1.1'+ Math.random()).replace(/\D/g,'')+"_"+new Date().getTime();

};

// window是全局对象,[]中的值可以是变量,也可以是字符串

window[defaults.jsonpCallback] = function(data){

defaults.success(data);

};

// 处理业务参数,把data数据转换为查询字符串

var param = '';

if(defaults.data){

for(var key in defaults.data){

param += key+"="+defaults.data[key]+"&";

}

}

// 使用设置参数覆盖默认配置

for(var key in options){

defaults[key] = options[key];

};

// 处理跨域请求

var script = document.createElement("script");

script.src = defaults.url+"?"+ param + defaults.jsonp+"="+defaults.jsonpCallback;

var head = document.querySelector("head");

head.appendChild(script);

}

ajax jsonp 解析data,jsonp详解相关推荐

  1. php 请求拦截,解决拦截器对ajax请求的拦截实例详解

    解决拦截器对ajax请求的的拦截 拦截器配置:public boolean preHandle(HttpServletRequest request, HttpServletResponse resp ...

  2. 爬虫解析利器PyQuery详解及使用实践

    作者:叶庭云 整理:Lemon 爬虫解析利器 PyQuery详解及使用实践 之前跟大家分享了 selenium.Scrapy.Pyppeteer 等工具的使用. 今天来分享另一个好用的爬虫解析工具 P ...

  3. php解析bt,PHP基于闭包思想实现的BT(torrent)文件解析工具实例详解

    PHP基于闭包思想实现的BT(torrent)文件解析工具实例详解 发布于 2017-09-08 20:05:36 | 124 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP( ...

  4. mysql的load data_【MySQL】load data语句详解(一)

    作者  罗小波 沃趣科技高级MySQL数据库工程师 load data语句详解 背景 数据库版本:MySQL 5.7.18 服务器信息:本地到处导入在10.10.30.241上演示,local远程导入 ...

  5. html css data-,HTML+CSS入门 HTML自定义data属性详解

    本篇教程介绍了HTML+CSS入门 HTML自定义data属性详解,希望阅读本篇文章以后大家有所收获,帮助大家HTML+CSS入门.< 可以在HTML标签上添加任意以 "data-&q ...

  6. java data使用_@Data注解详解及使用方法-Fun言

    @Data作用 去除Getter,Setter,equals,hashCode,toString方法,@Data注解在类上时,简化java代码编写,为该类提供读写属性.简单来说就是不用再手动添加get ...

  7. Android复习10【Service与Thread的区别、Service的生命周期、Service生命周期解析(相关方法详解、启动方式的不同、绑定)、音乐播放器+服务】

    音乐播放器Android代码下载:https://wws.lanzous.com/ifqzihaxvij 目   录 Service与Thread的区别 Service的生命周期 Service生命周 ...

  8. 一文搞定 Spring Data Redis 详解及实战

    转载自  一文搞定 Spring Data Redis 详解及实战 SDR - Spring Data Redis的简称. Spring Data Redis提供了从Spring应用程序轻松配置和访问 ...

  9. Ext.data.GroupingStore详解

    Ext.data.GroupingStore详解 Ext.data.GroupingStore 继承自Ext.data.Store,为Store增加了分组功能.其它用法与Store一致,惟一需要注意的 ...

最新文章

  1. 安装sql 2005 闪退 连接到服务器失败。错误:0x80070424
  2. 汽车票销售系统mysql,jsp683客运汽车票网上售票系统mysql
  3. 怎样生成分布式情况下的唯一标示?必须包含网卡字段,以便不同机器生成的唯一标示肯定不一样...
  4. Velodyne收购高清地图公司 将研发更安全的ADAS系统
  5. 三分钟构建高性能 WebSocket 服务 | 超优雅的 SpringBoot 整合 Netty 方案
  6. 如何用JavaScript实现获取验证码的效果
  7. mysql可以运行在不同sql mode模式下面,sql mode模式定义了mysql应该支持的sql语法,数据校验等...
  8. 招银网络笔试java_春招|招银网络Java软件开发 电话面试+一二三面面经
  9. Science:“熬夜会变傻”终于有科学依据了
  10. dva源码解析(一)
  11. 016医疗项目 数据字典(概念和在本系统中的应用)
  12. show processlist中kill锁表语句与慢sql
  13. 5个Linux 服务器发行版你值得拥有
  14. 《智能路由器开发指南》——2.6 参考资料
  15. 数据库的点数据根据行政区shp来进行行政区处理,python定时器实现
  16. 华为手机怎么导入主题_华为手机怎么安装主题?华为EMUI3.0-EMUI8.0主题安装教程...
  17. 计算机网络实验:无线组网
  18. 虚实接口是当前元宇宙发展的重中之重
  19. Linux(安装apache,设置端口,基于端口的配置方法)
  20. 阿里云ECS服务器+WordPress快速搭建个人博客

热门文章

  1. 攻防世界supersqli—wp
  2. NIO ByteBuffer的allocate与allocateDirect区别(HeapByteBuffer与DirectByteBuffer的区别)
  3. 计算机数值分析课学后感,计算方法课程总结 心得体会
  4. goahead处理json_GoAhead Web Server远程代码执行漏洞分析(附PoC)
  5. onpaste事件的浅谈
  6. STM32delay函数应用与说明
  7. 如何在Outlook中显示Google日历
  8. 艾美捷Annexin V-FITC凋亡检测试剂盒:简单、快速
  9. 百度云主机,腾讯云域名,怎么绑定解析 备案教程
  10. 被坑哭了!多多云上线调试BUG记录