Angular JS $http.get 从 WP REST API 返回空数据,但仅在实际 iOS 设备上

Posted

技术标签:

【中文标题】Angular JS $http.get 从 WP REST API 返回空数据,但仅在实际 iOS 设备上【英文标题】:Angular JS $http.get returns empty data from WP REST API, but only on actual iOS device 【发布时间】:2016-01-29 22:15:55 【问题描述】:

我正在制作一个使用 WP REST API V2 插件访问 Wordpress 网站的 Ionic 应用程序。鉴于我的控制器中的这段代码:

$http.get('http://www.greenfundsuriname.org/wp-json/wp/v2/posts/3701').then(function(response) 
    $log.log(response);
);

$http.get('http://www.greenfundsuriname.org/wp-json/wp/v2/posts/').then(function(response) 
    $log.log(response);
);

我在本地机器和 ios 模拟器中得到两个非常好的响应,请参阅:

在我的实际设备上,单个帖子工作正常,但帖子 URL 给了我一个空数组作为数据响应:

这怎么可能?

【问题讨论】:

设法在浏览器中获得相同的行为:codepen.io/lensco/pen/meKEqP(第一个按钮返回空数组响应,但 API URL 确实有内容) 你的代码笔对我来说似乎很好用。 显然这确实适用于其他几个人。我尝试增加 $http 超时,我验证了 JSON,我在不同(更快)网络的另一个地方尝试了它,它没有任何区别。 Posts API 路由在我的浏览器中运行良好,但通过 Angular $http 访问时返回一个空数组。其他 API 路由都很好。好吧,我会被诅咒的。 【参考方案1】:

原来是请求中的一个标头导致了这种情况。由于我的操作系统语言设置为荷兰语,因此 Accept-Language 标题要求在 Wordpress 中提供荷兰语帖子。 Wordpress 正确返回了一个空数组。其他人 - 其操作系统设置为英语 - 获得所有英语 Wordpress 帖子。像这样解决它:

$http.get( url, 
    headers: 'Accept-Language': 'en-US,en;q=0.8,nl;q=0.6'
);

【讨论】:

以上是关于Angular JS $http.get 从 WP REST API 返回空数据,但仅在实际 iOS 设备上的主要内容,如果未能解决你的问题,请参考以下文章

无法让设计从 Angular.js 中注销

如何从 Angular 5 中的 url 下载 pdf 文件

angular js中 http.get方法怎么用

Angular 4 和 Woocommerce API。 Http GET 有效,但 http POST 无效

angular js $http服务使用

Django:如何在 Jquery 中使用 $getJSON 或在 Angular.js 中使用 $http.get 接收 QuerySet?