我在使用以下代码时遇到了麻烦:
angular.module('offerServices', ['ngResource'])
.factory('Offer', function ($resource) {
return $resource('url/offers', { callback: 'JSON_CALLBACK' },
{
query: { method: 'JSONP' }
}
);
})
.factory('Trustyou', function ($resource) {
return $resource('https://api.trustyou.com/hotels/:id/seal.json', {},
{
query: { method: 'JSONP' }
}
);
});
调用Offer.query({},function(){}); 在我的控制器中工作没有任何问题。但是这部分不起作用:
var trustYouData = Trustyou.query({ id: 'd8421e79-99f0-41b2-8d6e-9cfd62a9776b' }, function (data) {
console.log(data);
});
这总是返回400错误:
“NetworkError:400错误的请求-
https://api.trustyou.com/hotels/d8421e79-99f0-41b2-8d6e-9cfd62a9776b/seal.json?callback=angular.callbacks._1
”
当我更改代码并使用jQuerys.getJSON时,我没有任何问题:
$.getJSON("https://api.trustyou.com/hotels/d8421e79-99f0-41b2-8d6e-9cfd62a9776b/seal.json?callback=?", function (data) {
console.log(data);
});
为什么在这种情况下jQuery方法有效,但是angulars $ resource实现返回错误?
Angular的回调函数存在一些问题,我在git中打开了一个问题
https://github.com/angular/angular.js/issues/1551
回调名称必须为“ JSONP_CALLBACK”,其中angular会将回调名称转换为callback = angular.callbacks._1
有些Web Web服务不能接受“ angular.callbacks._1”回调名称。
解决方案:
var stock_hack
function stock_search(data) {
stock_hack = data;
}
var stock_hack
function stock_search(data) {
stock_hack = data;
}
function jsonp_example($scope, $http) {
$scope.doRequest = function() {
$http({
method: "JSONP",
params: {
input: "GM",
callback: "stock_search"
},
url: "http://dev.markitondemand.com/Api/Lookup/jsonp",
isArray: true
}).success(function(data, status) {
/*
*Never Goes HERE !!
*/
}).error(function(data, status) {
/*
* FREAKING HACK !!!!
*/
console.info("goes here")
console.info(stock_hack)
});
};
}
我的小提琴http://jsfiddle.net/pMGgR/
关键是您必须调用另一个javascript函数来获得json响应。
希望有帮助
问题内容: 这里有一个简化的示例(改编自Angular网站): 问题 是该线路永远不会被呼叫。这是为什么?其他一切正常。 在这里住小提琴。 问题答案: 此功能仅在1.1.2或更高版本的AngularJs中可用。它在AngularJs的1.1.1或更早版本中不可用。
问题内容: 您能否举一个使用jquery读取jsonp请求的非常简单的示例?我就是无法正常工作。 问题答案: 这是工作示例: 注意所请求URL的末尾。这表明我们要使用JSONP。删除它,将使用原始的JSON请求。由于相同的原产地政策而失败。 您可以在JQuery网站上找到更多信息和示例:http : //api.jquery.com/jQuery.getJSON/
问题内容: 这是我的代码: 显示页面时,默认选中的单选框正确。但这不能取消选中,而我只能在其他两个复选框之间切换吗?我该如何解决这个问题? 问题答案: ng-repeat创建新作用域,因此您应该确定父作用域。 有关更多信息,请参见https://docs.angularjs.org/api/ng/directive/ngRepeat
问题内容: 更新的问题 我的虚拟主机 问题答案: 这是问题的最可能原因。您已经在超级用户的主文件夹中创建了virtualenv。但是该文件夹不太可能被Apache访问。默认情况下,其他任何用户都无法访问用户的主文件夹。 Web服务器和WSGI过程将运行作为一个非特权用户通常命名为,,或者类似的东西。虽然您可以通过更改/ root /上的权限来解决此问题,但这不是很大。如果是普通用户,则危险性会降低
我有一个战争,它在EAP 6.4.x下工作得很好(x目前是8,但也在6和4下,等等下到6.4.0)。 WAR具有一些简单的JMS客户机特性,可以将消息添加到远程机器上的队列中。目标QBroker是ActiveMQ 5.8.0。 从6.4.x到7.0.1开始“端口”;我对AMQ5.8.0 RAR的东西很感兴趣。对于初学者--还不会使用EAP7中的AMQ Artemis的任何东西。最初,我希望在7.0
我在django中使用spotify API/spotipy,需要用户登录到他们的帐户才能访问他们的数据。我使用了“pip3 install django-cors-Headers”并将适当的部分添加到settings.py. 即使这样,我仍然收到有关缺少访问控制允许源标头的错误,并且spotify登录页面无法打开。 jquery.min.js:2 XHR完成加载:GET"http://local