ajax跨域实现

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

       我们都知道ajax是不能跨域的,那么怎么实现ajax跨域呢?

       看了看jquery,当然,jquery封装的很好,$.ajax就可以实现跨域,只需要在参数中配置一下即可,但在这儿,我把它和ajax分开,因为它的原理和ajax的原理还是大不一样的。

        实现ajax跨域的一个常用方法是使用jsonp,jsonp可以说是一种格式,它实际上把请求的URL里面的内容当成一个JS,当URL的内容下载下来之后直接执行。

        因为这样,所以对请求的URL的格式是有一定要求的,如:fn({}),{}这个里面的内容就是传递回来的数据。

        搞懂这个之后,整个实现就不难了,基本上就是首先拼接URL,把所有要传递的数据拼接到URL上面,即通过GET方式传递数据。

        如:test.php?data1=a&data2=b&data3=c

        之后就是创建一个DOM节点,将这个节点插入到文档中,发起一个HTTP请求,当数据下载完毕之后,由于它是被当做JS,它会自动执行这个函数。

        代码如下:

 

var jsonp = function(options) {var _options = {url : options['url'] || "",success : options['success'] || "",jsonp : options['jsonp'] || "callback", //jsonp调用参数jsonpCallback : options['jsonpCallback'] || "callbackHandler", //jsonp回调函数名data : options['data'] || "" //{}字面量形式};var url = _options['url'] + '?';for(var key in _options['data']) {url += (key + "=" + _options['data'][key] + "&");}url += (_options['jsonp'] + "=" + _options['jsonpCallback']);var node = document.createElement("script");var ele = document.getElementsByTagName("head")[0];//将函数挂在window上面,执行之后立即删除window[_options['jsonpCallback']] = function(data) {//拿到jsonp数据之后就需要将DOM中相应的节点清除window[_options['jsonpCallback']] = undefined;try {delete window[_options['jsonpCallback']];} catch(e) {}_options['success'](data);setTimeout(function() {ele.removeChild(node);},10);};node.setAttribute("type","text/javascript");node.setAttribute("src",url);ele.appendChild(node);
};






转载于:https://my.oschina.net/mingtingling/blog/110961

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

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

相关文章

全国计算机等级考试题库二级C操作题100套(第52套)

第52套: 给定程序中,函数fun的功能是:将NN矩阵中元素的值按列右移1个位置, 右边被移出矩阵的元素绕回左边。例如,N3,有下列矩阵 1 2 3 4 5 6 7 8 9 计算结果为 3 1 2 6 4 5 9 7 8 请在程序的下划线处填入正…

python leetcode_leetcode 刷题经验,主力 python

1. 树的先序遍历可以求高度,后序遍历可以求深度。剑指 Offer 55 - II. 平衡二叉树​leetcode-cn.com2. 二叉搜索树的中序遍历可以递增地返回所有元素。逆序的中序遍历(即先右子节点,再根节点,再左子节点)可以递减的返回…

普及几个小常识,新手技能补充

一,如何设置门户或者论坛为首页?后台界面》导航管理,看向每个导航的最后面,有选择是否设置为首页,选中的即为打开之后的首页。二,如何添加二级导航,后台界面》导航管理,添加二级导航…

sqlldr 导入乱码,Oracle客户端字符集问题

2019独角兽企业重金招聘Python工程师标准>>> 1,查Oracle数据库创建时候的字符集: Oracle服务器端执行 SQL> select name, value$ from sys.props$ where name like NLS%; NAME VALUE$ ------------------------------ -------------------…

全国计算机等级考试题库二级C操作题100套(第53套)

第53套: 函数fun的功能是:计算请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序…

python中hashmap的方法_如何为Java的HashMap模拟Python的dict的“ items(...

我知道我应该学习如何使用Java进行高效编程,而不再认为它是Python.但是问题在于,这种事情在Java中变成了一场噩梦. 我在Python中具有以下函数,该函数将字符串作为参数: def decodeL(input): L [] for i in range(len(input)): for j in x.items(): // Where "…

Python在mysql中进行操作是十分容易和简洁的

首先声明一下,我用的是Windows系统! 1、在Python中对mysql数据库进行操作首先要导入pymysql模块,默认情况下,Python中是没有安装这个模块的, 可以在Windows的命令行中用pip install pymysql来安装(注意要连…

讲php fpm的书,细说PHP-fpm

最近在研究PHP的源码,有时候会延伸到很多东西。这里就专程找了下php-fpm的内容学习下。是什么?在理解php-fpm之前,我们要先搞清楚几个关键词以及他们之间的关系:CGIFastCGIphp-fpmphp-cgi.CGI:(Common Gateway Interface),即通用网…

J2SE综合对java util的总结 一

J2SE综合对java util的总结 一 java.util包中包含了一些在Java 2中新增加的最令人兴奋的增强功能:类集。一个类集(collection)是一组对象。类集的增加使得许多java.util中的成员在结构和体系结构上发生根本的改变。它也扩展了包可以被应用的任…

全国计算机等级考试题库二级C操作题100套(第54套)

第54套: 给定程序中,函数fun的功能是:计算出带有头结点的单向链表中各结点数据域中值之和作为函数值返回。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中…

安卓微软雅黑字体ttf_618巨献丨精致的悦黑5字重小字体

悦黑字体简介去年双十一当天,小编应大家要求,分享了一款悦黑小字体,苹果和安卓都有:双十一巨献:令人瑟瑟发抖的5字重悦黑小字体大半年时间过去了,一直没有更新,今天抽空更新一下。悦黑是由造字工…

全国计算机等级考试题库二级C操作题100套(第55套)

第55套: 给定程序中,函数fun的功能是:判断形参s所指字符串是否是"回文" (Palindrome),若是,函数返回值为1;不是,函数返回值为0。“回文” 是正读和反读都一样…

面试的问题 及回答

1、Postmessage 与 SendMessage的区别 PostMessage该函数将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回,是异步消息模式。消息队列里的消息通过调用GetMessage和PeekMessage取得 SendMes…

伪静态隐藏域名后缀_你想知道的动态URL、静态URl、伪静态URL概念及区别都在这里!...

【小宅按】我们说url的动态、静态、伪静态三种形式,其实从严格分类上来说,伪静态也是动态的一种,只是表现形式为静态。参考:动态url、静态url和伪静态url的详细讲解 - 好文分享动态URl动态页面的特征1、以ASP、PHP、JSP、ASP.NET …

700多位老人的“智慧”养老记

“智慧”养老,受益的不只是居住养老公寓的老年人,养老机构本身也受益匪浅。 2012年12月,由汇晨养老公司机构管理有限公司(简称汇晨养老公司)与NEC中国共同开发的智能老年公寓信息化系统投入运行,生活在北京昌平区北七家汇晨老年公…

java清理语句,java – 如何在不使用准备语句的情况下对SQL进行清理

对,准备好的语句查询参数只能在您使用单个文字值的地方使用.您不能对表名,列名,值列表或任何其他SQL语法使用参数.所以你必须将你的应用程序变量插入到SQL字符串中,并引用相应的字符串.请使用引号来定界您的表名标识符,并将引号字符串加倍排列:java.sql.DatabaseMet…

【NOIP模拟】图论题Graph

题面 n点2n-2条有向边&#xff0c;数据先给一颗1为根的生成树边集&#xff0c;边目录按两部分给出 1、 开始的 n-1 条边描述了一颗以 1 号点为根的生成树&#xff0c;即每个点都可以由 1 号点 到达。 2、 接下来的 N-1 条边&#xff0c;一定是从 i 到 1&#xff08;2<i<N…

全国计算机等级考试题库二级C操作题100套(第56套)

第56套&#xff1a; 给定程序的功能是&#xff1a;从键盘输入若干行文本&#xff08;每行不超过80个字符&#xff09;&#xff0c;写到文件myfile4.txt中,用-1作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和WriteText实现…

docker 安装nginx_docker安装nginx搭建简单文件共享服务

使用nginx开启目录浏览功能&#xff0c;实现简单的http文件共享服务。一、 首先拉取nginx镜像&#xff0c;我使用的是arm32v7/nginx镜像。docker pull arm32v7/nginx二、运行一个临时的nginx实例&#xff0c;复制容器内的nginx.conf配置文件到主机上docker run --name tmp-ngin…

java _web之Servlet简单应用

Servlet是一种独立于平台和协议的服务器端的Java应用程序&#xff0c;可以生成动态的web页面。它担当Web浏览器或其他http客户程序发出请求、与http服务器上的数据库或应用程序之间交互的中间层。 所谓动态网页&#xff0c;就是在不同时刻或不同条件下访问Web服务器上的同一个页…