ajax有跨域问题而静态资源(js文件,css文件)没有,是不是可以将ajax调用转换为静态资源的GET请求呢,这就是JSONP的逻辑
假设www.xxxx.com/test.do?id=2路径原来返回的是一个json对象,如下
{"username":"javacoder.cn"}
现在将请求改为www.xxxx.com/test.do?id=2&callback=mycallback,返回值改为
mycallback({"username":"javacoder.cn"})
这样返回值就是一个合法的js脚本了,浏览器就可以通过
1 |
<script src="www.xxxx.com/test.do?id=2&callback=mycallback"></script> |
标签将其加载到页面,
这样mycallback函数就得以执行啦,
比如我们的mycallback函数定义如下:
1 2 3 4 5 |
<script > function callback(data) { console.log(data.username); } </script> |
那么jsonp有什么不好处呢,
1)只能支持GET请求,
2)如果每次的参数都不一样,页面应该会有很多个
<script src="www.xxxx.com/test.do?id=XX&callback=mycallback"></script>
这样的标签
Posted in: WEB开发
Comments are closed.