angular的正常机制采用引入$http服务的形式进行 get post等的访问。但是在跨域访问的时候就需要采用jsonp了。
不废话,直接上示例和引用原文地址:
比如访问地址为
http://url
需要再上边的 url后边加上 callback=JSON_CALLBACK
即访问地址形式为:
http://url?callback=JSON_CALLBACK
此访问的意思是告诉服务器端需要获取我的 callback (key),然后采用对应的key值对应的value JSON_CALLBACK (字符串)
进行返回,jsonp 这边会将返回的内容作为一个js表达式进行调用。
即服务器那边放回形如 return "JSON_CALLBACK("+ jsonData +")"; 的内容。
这边直接进行调用,当然你js的这边需要提供好对应的方法,既然你传递过去了 JSON_CALLBACK 那么就声明一个
JSON_CALLBACK全局方法吧。
即 function JSON_CALLBACK(){//your code
}
好吧,上边说的其实是一般的方法,在angular里边按照这么进行调用的话,其实请求的地址是形如(可以在debug模式中的network中进行查看)
http://url?callback=angular.callbacks._0
所以在返回的时候就要将对应的 JSON_CALLBACK 进行更改了。
即服务器端需要返回 return "angular.callbacks._0("+ jsonData +")"; 的内容
最后写一下就是, 服务器只要按照上边进行返回的话,那么就直接在success中进行调用了~ 我的是这个样子的,欢迎大家分享沟通。
$http.jsonp(url).success(function(data){
console.log(data);});
附上stackoverflow(真是个好网站)参考地址:
原文地址: