跨域的jsonP-阿里云开发者社区

开发者社区> shy丶gril> 正文

跨域的jsonP

简介:
+关注继续查看
1.出现原因:因为web中的同源策略(域名,协议,端口号)限制了跨域访问。
 
2.区别于json
(个人理解)json是数据交换格式,jsonp是数据通信中的交互方式
 
3.jsonp的get与post
本质是使用script标签的跨域特性。
 
4.jQuery的写法(一)
复制代码
$.ajax({ 
 async:false, 
    url: , 
    type: "GET", 
    dataType: 'jsonp', 
    jsonp: 'jsoncallback', 
    data: qsData, 
    timeout: 5000, 
    success: function (json) {
    
    }, 
    error: function(xhr){ 
     
});
复制代码
 
jQuery的写法(二)
$.getJSON("http://跨域的dns/document!searchJSONResult.action?name1="+value1+"&jsoncallback=?", 
 function(json){ 
 
}); 
 
 
 
5.JS的写法
var eleScript= document.createElement("script");
eleScript.type = "text/javascript";
eleScript.src = "http://...";
document.getElementsByTagName("HEAD")[0].appendChild(eleScript);
 
6.原理与过程

首先在客户端注册一个callback, 然后把callback的名字传给服务器。

此时,服务器先生成 json 数据。 然后以 javascript 语法的方式,生成一个function , function 名字就是传递上来的参数 jsonp。

最后将 json 数据直接以入参的方式,放置到 function 中,这样就生成了一段 js 语法的文档,返回给客户端。

客户端浏览器,解析script标签,并执行返回的 javascript 文档,此时数据作为参数,传入到了客户端预先定义好的 callback 函数里。(动态执行回调函数)


 
7.一些需要注意的问题
<1>“myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
<2>jQuery中的jsonpCallback:为 jsonp 请求指定一个回调函数名。这个值将用来取代 jQuery 自动生成的随机函数名。这主要用来让 jQuery 生成度独特的函数名,这样管理请求更容易,也能方便地提供回调函数和错误处理。
转载:http://www.cnblogs.com/zqzjs/p/4975829.html

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
浏览器跨域问题 jsonp
惯例: 我是温浩然: 诚实一点,学得别人的,就是转载的。 网址:http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.html 只有浏览器有跨域的问题,所以说,这篇文章是为了解决浏览器的跨域问题。 跨域传输数据用jsonp格式。至于想知道什么是jsonp,看上面的网址去。大神写的。 根据文章的
1055 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
4068 0
跨域请求获取Solr json检索结果并高亮显示
  Solr提供了json格式的检索结果,然而在跨域的情况下如何调用呢?我们可以利用jquery提供的jsonp的方式获取Solr检索结果。 $("#search").
675 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4480 0
jsonpweb端跨域资源请求
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34173549/article/details/80547783 js...
579 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
5729 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
3227 0
Web APi之手动实现JSONP或安装配置Cors跨域(七)
前言 照理来说本节也应该讲Web API原理,目前已经探讨完了比较底层的Web API消息处理管道以及Web Host寄宿管道,接下来应该要触及控制器、Action方法,以及过滤器、模型绑定等等,想想也是心痛不已,水太深了,摸索原理关键是太枯燥和乏味了,但是呢,从情感上还是挺乐意去摸索原理,而情绪上不太乐意去探究原理,于是乎,本文就由此诞生了,借此文缓解下枯燥的心情和压抑的情绪。
1211 0
+关注
1878
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载