远程jsonp服务提供的东西和普通的ajax+json一样,也是一串json.
普通ajax调用受限于浏览器的同域限制,只适用于客户端和服务端属于同一个域名的情况。
jsonp就是用来突破这个限制的。它本质并不是ajax调用,而是一个“远程script源码的引用”
<script src="http://remote-site/hello.jsonp"> <!--这种引用不受同源策略限制--> </script>
http://remote-site/hello.jsonp返回的格式类似于:
引用
onJsonpLoad("{resut:success,value:123}");
也就是说,返回的是一条符合JS语法的javascript语句
1. 所以,<script src="xxx"/>这种方式才能成功运行。
2. 远程返回语句后,客户端还会立即执行这条语句;这就意味着onJsonpLoad()方法是客户端中的一个回调方法。为了给予客户端足够的灵活性,服务端一般不会将回调方法名写死,而是让客户端在URL里指定,再原样返回。