三句话总结:javascript
<script>
元素的开放策略,网页能够获得从其余来源动态获取的 JSON 数据,数据被包裹在一个JavaScript 函数中。第一步:在window下添加一个名为myFunction的函数html
window.myFunction = function(res){ console.log(res); }
第二步:在html中插入script标签vue
<script type="text/javascript" id="jsonp" src="http://www.xxxx.com/getJsonp?callback=myFunction"></script>
必需要先在window下添加处理函数myFunction才能插入script标签,不然会提示Uncaught ReferenceError: myFunction is not defined
。java
先后端必须约定好函数名。目前w3c对于JSONP并未标准化,大多数状况你们是如此约定的:在获取数据的接口url中添加查询字符串,例如http://www.xxxx.com/getJsonp?callback=myFunction,服务端根据这个查询字符串返回一个一段用myFunction包裹的JSON,myFunction({"data":...})。git
挂在window下的函数名应尽可能特别一些。因为window下常常会添加各类属性,若是某个重要属性和JSONP返回的函数名相同,则原有的函数会被JSONP的函数覆盖,目前不少库都对这个函数名作了特殊处理,例如vue-resource会把JSONP返回函数命名为一个随机串。github