jQuery的jsonp方法在不跨域的情况下就是个坑

如果遇到跨域的情况,jsonp是个不错的方法,毕竟对于跨域的get请求足够了。那么假如后端提供一个jsonp服务,在跨域和不跨域的情况下,是否都是ok的呢?

jQuery的jsonp方法在不跨域的情况下就是个坑

$.ajax({ url: "http://jsonp-service", data: {}, dataType:"jsonp", success: handleSuccess, error: handleError }); 如果是跨域的情况下,上面代码能够很好的执行。但如果是同域的情况下,就悲剧了,通过控制台发现,请求实际上是由xhr对象发出的,这样的话我们原来处理返回结果的代码就不好用了,会包含callback的东西在里面,需要额外处理。
那这个时候我们不能因为这个让后端再开一个接口吧,如果是zepto就没有这个问题,所以简陋也有简陋的好处。

解决办法:
dataType:"jsonp" 换成 dataType:"json"

相关阅读