今天帮同事调试了下jquery中使用ajax jsonp方式,导致众多问题的原因是没有理解jquery中jsonp的本质。
查看了jquery源码后才知道他是添加脚本方式,但添加是的直接执行的方法,这个方法是jquery动态生成的,通过参数传递到后台的,后台通过request获得并以该参数值作为方法名,把json数据当成变量,加载完srcipt标签后直接执行该函数。
例如:
jsonp1251707322751({"name":"lava","nick":"\u6bd4\u76ee\u9c7c","contact":{"MSN":"lavaguo#msn.com","email":"guo.feng#zol.com.cn","website":"http:\/\/www.zol.com.cn"}})
jsonp1251707322751就是jquery动态生成的方法名,jsonp1251707322751()就是执行这个方法,里面的json就是参数了。
所以后台直接返回一个json是无法解析的,而且方法名必须是jquery动态生成的,如果是自己定义的则无法打开链接,火狐下报错为:
Access to restricted URI denied" code: "1012
请求url格式为http://xxx?callback=?",后端request获取参数为callback
下面是引用了网上的一个测试页面
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
</head>
<body>
<script type="text/javascript">
function aa()
{
alert("aa message!");
}
function do_jsonp() {
$.getJSON("http://active.zol.com.cn/guofeng/profile2.php?callback=?",
function(data) {
$('#result').val('My name is: ' + data.nick);
});
}
</script>
<a href="javascript:do_jsonp();">Click me</a><br />
<textarea id="result" cols="50" rows="3"></textarea>
</body>
</html>
分享到:
- 2009-08-31 17:25
- 浏览 5239
- 评论(0)
- 论坛回复 / 浏览 (0 / 5914)
- 查看更多
相关推荐
Jquery与ajax用JSONP方式调用新浪API将长网址转换为新浪的短网址。
利用JQuery jsonp实现Ajax跨域请求 .Net 的*.handler 和 WebService,返回json数据
html通过 ajax jsonp跨域请求接收和传送数据 使用HTML页面与后台跨域交互,获得后台数据或传输数据给后台
PHP AJAX JSONP实现跨域请求使用范例
jsonp 解决的是跨域 ajax 调用...今天,发现 jsonp 的另外一个限制(在jquery ajax的场景下) —— 不会触发 $.ajax 的error callback,示例代码如下: 代码如下:$.ajax({ dataType: ‘jsonp’, error: function (xh
使用Jquery中的Aajx方法利用Jsonp方式访问豆瓣公开的api接口,跨域获取书籍信息。
jQuery跨域访问,封装的ajax 代码,我使用的jQuery版本是1.11.3
本文将给您介绍如何使用getJSON来实现异步跨域提交表单
下面小编就为大家带来一篇浅谈JQuery+ajax+jsonp 跨域访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
基于ajax方式的跨域请求jsonp的前后台代码
jQuery-JSONP是一个支持 JSONP 调用的 jQuery 插件,使用它是因为它支持出错时的 ajax 回调,而 jQuery 的 $.ajax 不支持,我们已经在实际项目中使用,在开始使用时遇到了2个问题,在这里记录并分享一下。
ajax跨域请求,jquery.jsonp插件
jquery-jsonp插件
ajax jsonp跨域传参,里面有源码,不过写在txt中了,很适合调用别人的接口
jquery的ajax访问后台代码,返回jsonp类型的数据,并应用案例。
主要介绍了详解JavaScript中jQuery和Ajax以及JSONP的联合使用,jQuery库和Ajax异步结构以及JSON数据传输也是JS日常编程中最常用到的东西,需要的朋友可以参考下
jQuery-JSONP jQuery-JSONP 是 jQuery 的 JSONP 实现的一个紧凑(1.8kB 缩小)但功能丰富的替代解决方案。 许可 ... 例如,从 2.3.0 版本开始,$.jsonp() 在与 jQuery 1.5+ 结合使用时会返回一个 prom
该资源为ASP.NET网站开发技术中使用Ajax进行跨域请求时利用JSONP方案解决浏览器同源策略限制的源码,比较简单,仅供参考
ajax jsonp 跨域处理