JsonP 返回“未捕获的语法错误:意外的令牌:”AngularJS - routingnumbers.info

Posted

技术标签:

【中文标题】JsonP 返回“未捕获的语法错误:意外的令牌:”AngularJS - routingnumbers.info【英文标题】:JsonP returning "Uncaught SyntaxError: Unexpected token :" AngularJS - routingnumbers.info 【发布时间】:2014-12-03 10:16:46 【问题描述】:

我已经对这个问题进行了大量研究,希望有人可以帮助诊断问题所在。

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

    questions/16344933/angularjs-jsonp-not-working/16352746#16352746 questions/19269153/jsonp-request-in-angularjs-doesnt-work-like-in-jquery questions/19669044/angularjs-getting-syntax-error-in-returned-json-from-http-jsonp

除此之外……

我尝试过的事情: 我已将 &callback=JSON_CALLBACK 添加到网址的末尾。我已经更改了配置设置,例如 responseType: 'JSON'。我还多次重新排列了 http.jsonp 请求,以确保它不是程序化/文本(http() & http.jsonp

这是我想要做的: 使用角度 jsonp 请求从 routingnumbers.info/api/ 获取信息(服务器不允许 CORS)。我可以使用 jQuery 成功发出请求,但我无法使用 angular 成功发出请求。

这里是对应的测试小提琴:http://jsfiddle.net/dqcpa/14/

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

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

任何帮助都会很棒!

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

【问题讨论】:

您不需要添加?callback=&callback= 吗?是问号,不是 & 号 URL 上已经有一个 ?rn=。请参阅路由ApiUrl。使用 & 作为查询字符串的延续。 【参考方案1】:

根据这个问题: How to get rid of Uncaught SyntaxError: Unexpected token : 尝试在您的服务器端 json 调用周围添加 angular.callbacks._0 (JSON)。它对我有用

这是http://plnkr.co/edit/oX2UQRBA41FIHpwAP6AA的笨蛋

【讨论】:

响应未包含在 angular.callback._0​​ 中。对于 jQuery,调用被正确包装。这是我的问题的正确描述。

以上是关于JsonP 返回“未捕获的语法错误:意外的令牌:”AngularJS - routingnumbers.info的主要内容,如果未能解决你的问题,请参考以下文章

jQuery JSONP“未捕获的语法错误:意外的令牌:”

获取未捕获的语法错误:意外的令牌:读取 jsonp 响应时

错误:未捕获的语法错误:意外的令牌 <

未捕获的语法错误:意外的令牌:getJSON

节点/角度应用程序未捕获的语法错误:意外的令牌 <

D3.js:“未捕获的语法错误:意外的令牌非法”?