求详解jsonp跨域

_未名 2016-03-07 11:25:01
求详解jsonp跨域
...全文
249 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
大梁魏武卒 2016-03-22
  • 打赏
  • 举报
回复
引用 9 楼 xuzuning 的回复:
<script src="url"></script> 改变 url 就可获取任何地方的任何数据,只要他返回的是合法的 js 语句 称之为 jsonp 简直是无稽之谈
斑竹,那个能详细一下介绍jsonp吗?
xuzuning 2016-03-17
  • 打赏
  • 举报
回复
<script src="url"></script> 改变 url 就可获取任何地方的任何数据,只要他返回的是合法的 js 语句 称之为 jsonp 简直是无稽之谈
logodongchang 2016-03-17
  • 打赏
  • 举报
回复
jsonp格式是ajax跨域访问,后台如何接受它的值回调到页面呢?回调过来的函数地址栏会发生什么改变?
Chouglas 2016-03-09
  • 打赏
  • 举报
回复
js代码
var url= "xxxx.com?callback=callFunction";
var script = document.createElement("script");
script.setAttribute('src',url);
document.getElementsBytagName('head')[0].appendChild(script);

//回调函数
function callFunction(data){
    console.log(data);
}
php 代码
<?php
	$func = $_REQUEST["callback"];
	echo $func.'({resp:"success"})';
?>
js执行顺序为,先创建script元素,设置url为请求地址,添加到dom中被执行,php接收到请求后, 返回字符串 callFunction({resp:"success"}),即创建的js文件中的代码是 callFunction({resp:"success"})(和我们在本地建立一个js文件,只写一句callFunction({resp:"success"})效果是一样的), 这个语句是对callFunction(data)函数的调用,这样就可以在回调函数中处理结果了。 jsonp原理相同,只能支持get请求。
Go 旅城通票 2016-03-08
  • 打赏
  • 举报
回复
引用 4 楼 Smallsun_229 的回复:
可是script标签只会加载一下js文件,还会执行回掉函数吗?而且为什么直接放置的script也没有返回数据啊?
这几个得远程服务器支持jsonp,就是输出js代码,如果直接返回json数据获取不到,需要用yql转为jsonp格式的 JSONP跨域访问在线代理API
_未名 2016-03-07
  • 打赏
  • 举报
回复
可是script标签只会加载一下js文件,还会执行回掉函数吗?而且为什么直接放置的script也没有返回数据啊?
Go 旅城通票 2016-03-07
  • 打赏
  • 举报
回复
src就是加载的地址,一般要附带回调参数名称,有什么不理解,你直接放置的script也是要动态发送一次get请求,script就是要加载远程js文件用的,和img一样
_未名 2016-03-07
  • 打赏
  • 举报
回复
那他动态加载的script标签的src属性的值就是请求的url吗??我理解不了为什么动态添加一个script标签就相当于发送了一次get请求?
Go 旅城通票 2016-03-07
  • 打赏
  • 举报
回复
jsonp就是js代码,动态创建script加载而已,只是jsonp一般生成的代码就是 回调函数名(数据)这种形式的,多返回其他js代码也行,只要符合js规范
KK3K2005 2016-03-07
  • 打赏
  • 举报
回复
引用 2 楼 Smallsun_229 的回复:
那他动态加载的script标签的src属性的值就是请求的url吗??我理解不了为什么动态添加一个script标签就相当于发送了一次get请求?
因为 浏览器会用get方式访问这个url

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧