在刚刚作为前端接触到项目的时候,按照示例一直在使用的$.getJSON、$.ajax({})
可以方便的以json格式异步传数据,感觉是如此方便,使用的url都没有问题,但实际上我稍微深入一点的理解都没有,连跨域都没有注意到。实际上,这其中有jsonp的应用。
【原创】说说JSON和JSONP,也许你会豁然开朗,含jQuery用例 这篇文章浅显易懂,讲解了json和jsonp。
1、ajax和jsonp这两种技术在调用方式上“看起来”很像,目的也一样,都是请求一个url,然后把服务器返回的数据进行处理,因此jquery和ext等框架都把jsonp作为ajax的一种形式进行了封装;
2、但ajax和jsonp其实本质上是不同的东西。ajax的核心是通过XmlHttpRequest获取非本页内容,而jsonp的核心则是动态加<script>
标签来调用服务器提供的js脚本。
结合资料,我的理解是jsonp是本站加<script>
标签来调用服务器提供的js脚本。地址指向第三方的API网址,并提供一个约定好的回调函数来接收数据,返回的是json数据。在回调函数里可以对返回的数据进行处理或者进行下一步的操作。
$.ajax({
success: function (data, status, xhr){
}
})
例如,我们熟悉的success函数就是约定好的回调函数。