我不完全确定发生了什么,因为我仍在试图计算跨域javascript调用,但我正在从WordPress站点调用一些JSON (即使用WordPress JSON插件)。由于它来自一个本地站点(我正在开发一个使用Ionic/Angular的移动应用程序),所以我遇到了一些跨域访问问题。所以,我正在考虑使用JSONP。
我已经成功地调用并返回了信息,但是我似乎无法对返回的数据做任何事情。
我的电话是这样的:
$http.jsonp('http://heavymetalhamilton.ca/wp-json/hmh-api/shows?_jsonp&callback=JSON_CALLBACK')
.success(function(data) {
console.log(data);
});但是,没有任何记录。我可以看到$http.jsonp调用正在返回数据(我可以在developer工具中看到,如下所示:
/**/([{"ID":30,"post_date":"2014-09-25 18:33:15","post_date_gmt":"2014-09-25
...
)我看到返回的数据有一些包装,但我不知道如何处理这些数据。
有什么帮助吗?
编辑:让CodePen中发生的事情发生
发布于 2014-10-28 12:24:45
所以,我遇到的最大问题(有几个)是我的jsonp电话。没有一个“成功”的承诺附在上面。Jsonp触发一个定义为回调的函数--在本例中,调用:
回调
一旦返回,调用mytest()的全局函数。因此,为了在我的控制器中获得一个全局函数,所以我可以使用$scope,我的最终结果是:
$http.jsonp('http://heavymetalhamilton.ca/wp-json/hmh-api/shows?_jsonp=mytest&callback=JSON_CALLBACK');
window.mytest = function(data) {
$scope.shows = data;
};我返回的内容类型也有问题(如@Miszy所述)。我必须指定Content设置为application/javascript.以前,它返回的是application/json。
在我的例子中,我编写了一些自定义功能来返回特定的内容,因此我添加了以下内容:
if ($_GET['_jsonp']) {
$response->header( 'Content-Type', 'application/javascript; charset=' . get_option( 'blog_charset' ), true );
}希望这能帮到路上的人!
发布于 2014-10-27 23:06:04
数据返回为JSON对象。请尝试使用以下格式登录
JSON.stringify(data);否则,您可以以下列方式查看返回的数据集
console.log(data.ID + ', ' + data.post_date);等等..。
https://stackoverflow.com/questions/26598306
复制相似问题