6

我是 javascript、angularJS 和 JQuery 的新手,但我刚刚开始编写一个 angularJS 应用程序,我使用 JQuery 从这样的网络服务器获取 JSON:

var obj = $.getJSON( "http://something.com/lol?query="+ $scope.searchString, function() {
            $scope.items = obj.responseJSON.entries;                    
        }

angularJS 中是否有等于 $.getJSON 的方法?这样我就不必导入 JQuery 库。

先谢谢了,新手。

到目前为止,这是我的解决方案:

function InstantSearchController($scope, $http){
 $scope.search = function() {   
  $http.jsonp("http://something.com/lol?query="+ $scope.searchString + "?json_callback=JSON_CALLBACK").success(
                        function(data, status) {
                            console.log(data);
                        }
                );
 }

但我收到错误消息:

Uncaught SyntaxError: Unexpected token :

为什么是这样?我究竟做错了什么?}

4

6 回答 6

8

由于我从回答我的问题的人那里得到了帮助,我终于设法解决了它,我这样做了:

app.controller('myController', function($scope, $http){
    $scope.items = [];  
     $scope.search = function() {        
            $http({method: 'JSONP', url: "http://something.com/lol?callback=JSON_CALLBACK&query="+ $scope.searchString}).
              success(function(data, status) {
                $scope.items = data.entries;
              }).
              error(function(data, status) {
                console.log(data || "Request failed");
            });     
     };

希望这对将来遇到同样问题的人有所帮助:D

于 2013-10-15T12:11:08.347 回答
2

您可以使用$httpAngular 发送 AJAX 请求。

于 2013-10-14T09:10:57.010 回答
2

您可以使用带有 $http.jsonp 的 JSONP 请求

https://docs.angularjs.org/api/ng/service/$http#jsonp

于 2013-10-14T09:13:28.983 回答
1
function ListProdcutsCtrl($scope, $http) {
    var request = {'searchString' : 'apple'};
    $http.get('/api/products', request).success(function(response) {
        $scope.products_table_data = response.products;
    });
于 2013-10-14T09:11:12.060 回答
1

在 AngularJS 中有一个替代方法$http,你可以在这里找到更多。例如 :

$http({method: 'JSONP', url: 'http://domain.com/page?json_callback=JSON_CALLBACK'}).success(
    function(data, status) {
        // your stuff.
    }
);

甚至更短:

$http.jsonp('http://domain.com/page?json_callback=JSON_CALLBACK').success(
    function(data, status) {
        // your stuff.
    }
);

JSONP (JSON Padding) 允许您从另一个域获取 JSON 数据。但是,您获得的数据不应该是纯 JSON,而是像这样的 Javascript 文件:

JSON_CALLBACK([
    {"name": "apple", "color": "red"},
    {"name": "banana", "color": "yellow"}
]);

如果您需要的 JSON 数据来自同一个域,则不需要 JSONP。

于 2013-10-14T09:14:05.077 回答
0

JSONP 用于克服 AJAX URL 调用的跨域限制。

使用 AngularJS (v1.5),您可以使用此代码发送跨域请求:

$http.jsonp(baseurl+'?token=assume_jwt_token'+encoding+type + "&callback=JSON_CALLBACK")

AngularJS JSONP 请求的语法是:

$http.jsonp(url, [config]);

其中 url 是“字符串”类型,表示指定请求目的地的相对或绝对 URL。回调的名称应该是字符串 JSON_CALLBACK,[config] 是可选的配置对象。

于 2016-06-03T06:29:05.557 回答