我已经对这个问题进行了荒谬的研究,并希望有人可以帮助诊断出问题所在。
我已经尝试过查看以下 SO 问题:(由于声誉原因,我不会让我发布超过 2 个链接,所以我只包含了路径)
- 问题/16344933/angularjs-jsonp-not-working/16352746#16352746
- 问题/19269153/jsonp-request-in-angularjs-doesnt-work-like-in-jquery
- 问题/19669044/angularjs-getting-syntax-error-in-returned-json-from-http-jsonp
在许多其他......
我尝试过的事情: 我已将&callback=JSON_CALLBACK添加到 url 的末尾。我已经更改了诸如responseType: 'JSON' 之类的配置设置。我还多次重新安排了 http.jsonp 请求,以确保它不是程序化/文本的(http({}) 和 http.jsonp)
这是我正在尝试做的事情:使用角度 jsonp 请求 从routingnumbers.info/api/获取信息(服务器不允许 CORS)。我可以使用 jQuery 成功发出请求,但我无法使用 angular 成功发出请求。
这是相应的测试小提琴:http: //jsfiddle.net/dqcpa/14/
如您所见,我收到两个错误:
- 资源解释为脚本,但使用 MIME 类型 text/plain 传输:“ https://routingnumbers.herokuapp.com/api/data.json?rn=071000013&callback=angular.callbacks._0 ”。角.min.js:97
- Uncaught SyntaxError: Unexpected token :
但是,如果您检查 chrome devtools - NETWORK 中的响应,它是正确的:虽然我知道 jsonp 将返回 jsonpfunction({ "MyJson": "Data"}) 内部的响应,这是它挂断的地方。
这是原始代码:
//$scope.number = '071000013';
var routingApiUrl = 'https://routingnumbers.herokuapp.com/api/data.json?rn=' + $scope.number;
$http({
method: 'jsonp',
url: routingApiUrl + '&callback=JSON_CALLBACK',
responseType: "json"
}).
success(function(data){
console.log('Success: ' + data);
}).
error(function(data){
console.log('Error: ' + data);
});
有没有人使用这个API与角度?我假设我可以做一些事情(没有 jquery)来修改标题,但我无法找到任何信息。我还认为这可能是服务器问题(尽管,如果它在 jquery 中正常工作,那将不是问题)。也许这可能与HTTPS有关
TL:DR - Angular JSONP 请求不工作,但使用相同的 URL,jQuery JSONP 请求工作。参考上面的代码,我错过了什么?
任何帮助都是极好的!
编辑:一些标点符号和东西。