jQuery(三) javascript跨域问题(JSONP解决)
加油~
--WZY
一、什么是javascript跨域问题?
域:服务器域名,唯一标识(协议,域名,端口)必须保证一致,说明域相同
跨域:在一个服务器上,去访问另一个服务器上,并且得到另一个服务器返回回来的值,这就是javascript跨域,其实简单点,之前我们做的ajax,都是在同域中访问,现在只是访问的服务器变成了另外的,不是同一台了。仅此而已。但是这样一变,之前的代码就不能用了。
二、解决javascript跨域问题
解决该问题,有很多种方式,我百度了一下,好像这就属于前端的范畴了,所以我决定研究一下JSONP的这种解决方案即可,留一篇我百度到的博文,详细讲解了其他的解决方案,仅供参考。
2.1、javascript跨域处理(JSONP)
原理图
可能初次看这张图不是很理解,其实很简单,跟着我的思路理清楚即可。
左边tomcat1服务器中有一个页面需要请求右边tomcat2服务器中的GetDataServlet,GetDataServlet就模拟用来返回json数据给tomcat1(跨域),这就是跨域问题。
tomcat1中编写请求目标地址,http://localhost:80/web/getData?callback=showData 后面会解释为什么呆callback这个参数。showData这个方法是用来接收返回回来的数据所做的一些处理的方法, 在tomcat2这边,提供数据的GetDataServlet首先获取请求参数,也就是那个回调方法的方法名称。然后生成要发送回去的json数据,最后就是通知tomcat1执行回调方法(为什么可以通知?这就是前面带callback这个回调方法名称的参数的作用,因为获取到了tomcat1中的回调方法名称,所以就可以通过该名称去通知tomcat1去执行回调方法。)
所以总的步骤就是4步,按照原理图上得步骤,一步步执行,然后获取到返回数据。注意,如果获取数据的jsonp地址页面不是你自己能控制的,就得按照提供数据的那一方的规定格式来操作了,这里只是模拟一下这个过程。讲解原理。
操作:

<!-- 需要将函数存在 调用之前,从而保存函数存在-->
<script type="text/javascript">
function showData(data){
alert(data.success);
}
</script>
<script type="text/javascript" src="http://localhost/web/getData?callback=showData"></script>
js跨域处理
提供数据端
这里只是模拟一下这种解决方案,实际开发中遇到问题,采用这种思路即可。
2.2、jQuery跨域处理
2.2.1、使用$.getJSON();
原理图

这里唯一要解释的就是,匿名回调方法的使用。
操作:
<script type="text/javascript">
$.getJSON("http://localhost/web/getData?callback=?",function(data){
alert(data.success)
});
$.getJSON操作
提供数据端还是不变的。
2.2.2、使用$.ajax()也能解决跨域问题。这里不做多陈述,具体可以查看文档进行操作。

三、总结
这一章节图比较多,代码比较少,主要把这个跨域问题讲解清楚了,解决跨域问题还有其他很多种方式,有兴趣可以自行百度。
jQuery(三) javascript跨域问题(JSONP解决)的更多相关文章
- JQuery的Ajax跨域请求的解决方式
今天在项目中须要做远程数据载入并渲染页面,直到开发阶段才意识到ajax跨域请求的问题,隐约记得Jquery有提过一个ajax跨域请求的解决方式,于是即刻翻出Jquery的API出来研究 ...
- javascript 跨域问题 jsonp
转载:http://www.cnblogs.com/choon/p/5393682.html demo 用动态创建<script></script>节点的方式实现了跨域HTTP ...
- [转]JavaScript跨域总结与解决办法
转载自http://www.cnblogs.com/rainman/archive/2011/02/20/1959325.html仅用作个人读书笔记. 什么是跨域 1.document.domain+ ...
- 关于javascript跨域及JSONP的原理与应用
同源策略,它是由Netscape提出的一个著名的安全策略,现在所有的可支持javascript的浏览器都会使用这个策略. 为什么需要同源策略,这里举个例子: 假 设现在没有同源策略,会发生什么事情呢? ...
- JQuery实现Ajax跨域访问--Jsonp原理
JavaScript是一种在Web开发中经常使用的前端动态脚本技术.在JavaScript中,有一个很重要的安全性限制,被称为“Same-Origin Policy”(同源策略).这一策略对于Java ...
- JavaScript跨域总结与解决办法
什么是跨域 1.document.domain+iframe的设置 2.动态创建script 3.利用iframe和location.hash 4.window.name实现的跨域数据传输 5.使用H ...
- JavaScript跨域总结与解决办法(转)
JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.但在安全限制的同时也给注入iframe或是ajax应用上带来了不少麻烦.这里把涉及到跨域的一些问题简单地整理一下: 首先什么是跨域 ...
- JavaScript跨域总结与解决办法 什么是跨域
什么是跨域 1.document.domain+iframe的设置 2.动态创建script 3.利用iframe和location.hash 4.window.name实现的跨域数据传输 5.使用H ...
- Jquery DataTable AJAX跨域请求的解决方法及SSM框架下服务器端返回JSON格式数据的解决方法
如题,用HBuilder开发APP,涉及到用AJAX跨域请求后台数据,刚接触,费了不少时间.幸得高手指点,得以解决. APP需要用TABLE来显示数据,因此采用了JQ 的DataTable. 在实现 ...
随机推荐
- java接口签名(Signature)实现方案
预祝大家国庆节快乐,赶快迎接美丽而快乐的假期吧!!! 一.前言 在为第三方系统提供接口的时候,肯定要考虑接口数据的安全问题,比如数据是否被篡改,数据是否已经过时,数据是否可以重复提交等问题.其中我认为 ...
- 《重回耶路撒冷——犹太人的三千年》(Return to Jerusalem)读后感
写在前面 书名:<重回耶路撒冷——犹太人的三千年>(Return to Jerusalem) 作者:张力升 来源:长清图书馆 阅读用时:其实年前拿到书,本来想寒假在家看的,但是在家一点儿都 ...
- google像apple 30亿美元购买流量
google花费30亿美元像apple购买流量作为iphone默认搜索引擎.
- yii2 数据提供者 dataProvider
数据提供者 dataProvider $dataProvider = new ActiveDataProvider([ 'query' => $query, // 如何来取得数据 'pagina ...
- Word2vec的Skip-Gram 系列1
转自雷锋网的一篇很棒的文章,写的通俗易懂.自己消化学习了.原文地址是 https://www.leiphone.com/news/201706/PamWKpfRFEI42McI.html 这次的分享主 ...
- db2 load报文件系统满
使用db2 load导入数据 数据量比较大时常常会报文件系统已满错误. 原因分析:导入表建有索引,在load的“索引复制”阶段会从系统临时表空间拷贝到目标表空间,导致系统临时表空间所在的文件系统满,l ...
- 实验楼-高级Bash脚本编程指南
实验1.Bash介绍与入门 1.简介:Bash是一个为GNU计划编写的Unix shell,它是许多Linux平台默认使用的shell shell是一个命令解释器,是介于操作系统内核与用户之间的一个绝 ...
- SpringMVC中使用JSON
前台发送: 传递JSON对象 function requestJson(){ $.ajax.({ type : "post", url : "${pageContext. ...
- .net core日志记录
.net core日志记录 日志是必须的,目前采用log4net进行日志记录. 定义通用的日志记录方法 public static class Log4NetFunc { private static ...
- C++ 中的不定参数与格式化字符串 # ## vsprintf
日志打印或者格式字符串时,可能会用到不定参数的使用,这里记录一下. 格式化字符串有很多方法: snprintf std::stringstream # ##的使用 ##是一个连接符号,用于把参数连在一 ...