返回JSON_CALLBACK的Angular JSONP未定义错误

Bri*_*ian 7 jsonp angularjs

我试图通过JSONP向下拉数据.我一直很疑惑为什么它在某些情况下不起作用.

我已经成功地提取了这个示例JSONP:

https://angularjs.org/greet.php?callback=JSON_CALLBACK&name=Brian

但是当在S3上复制到存储桶时,我不断收到此错误:

Uncaught ReferenceError: JSON_CALLBACK is not defined

该文件是公共的,我可以很好地访问它$.ajax,但不是$http.jsonp

我已经尝试将json文件的MIME类型更改为以下所有内容:

  • 应用程序/ JSON
  • 应用程序/ JavaScript的
  • 应用程序/ x-JavaScript的
  • 纯文本/
  • 文/ JavaScript的

他们都没有让我通过这个$http.jsonp功能成功打电话

Bri*_*ian 8

好了,这是很奇怪,但我最终得到它通过改变JSONP回调包装,从工作JSON_CALLBACK(.......)angular.callbacks._0,因为这是回调函数的角度一直试图调用,而不是JSON_CALLBACK ......非常怪异的行为.

  • `$ http.jsonp`将自动用`angular.callbacks.{{callbackId}}`替换url中的`JSON_CALLBACK`.出于某种原因,在你的情况下它没有这样做. (4认同)

Nad*_*bit 1

由于无法看到您的代码,我可以向您展示几天前在使用 JSONP 和 Angular 时对我有用的内容:

controller('YourCtrl', ['$scope', '$http', function($scope, $http) {
var url = "https://angularjs.org/greet.php?callback=JSON_CALLBACK&name=Brian"
$http.jsonp(url)
    .success(function(data) {
        $scope.greeting = data;
    });
}])
Run Code Online (Sandbox Code Playgroud)

然后在视图中,类似这样的事情应该起作用:

<div ng-controller="YourCtrl">
{{greeting.name}} <br />
{{greeting.salutation}}
</div>
Run Code Online (Sandbox Code Playgroud)

如果这不能回答您的问题,请尝试粘贴您的代码。