18

我已经对这个问题进行了荒谬的研究,并希望有人可以帮助诊断出问题所在。

我已经尝试过查看以下 SO 问题:(由于声誉原因,我不会让我发布超过 2 个链接,所以我只包含了路径)

  1. 问题/16344933/angularjs-jsonp-not-working/16352746#16352746
  2. 问题/19269153/jsonp-request-in-angularjs-doesnt-work-like-in-jquery
  3. 问题/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/

如您所见,我收到两个错误:

  1. 资源解释为脚本,但使用 MIME 类型 text/plain 传输:“ https://routingnumbers.herokuapp.com/api/data.json?rn=071000013&callback=angular.callbacks._0 ”。角.min.js:97
  2. 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 请求工作。参考上面的代码,我错过了什么?

任何帮助都是极好的!

编辑:一些标点符号和东西。

4

1 回答 1

6

根据这个问题: 如何摆脱 Uncaught SyntaxError: Unexpected token :尝试angular.callbacks._0 (JSON)在服务器端 json 调用周围添加。它对我有用

这是 plunker http://plnkr.co/edit/oX2UQRBA41FIHpwAP6AA

于 2015-07-28T21:04:32.087 回答