【问题标题】:Is there a method in angularJS thats equal to getJSON. [Newbie alert]angularJS 中是否有与 getJSON 相同的方法。 【新手提醒】
【发布时间】:2013-10-14 09:07:03
【问题描述】:

我是 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 :

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

【问题讨论】:

    标签: javascript jquery angularjs syntax-error getjson


    【解决方案1】:

    由于有人回答了我的问题,我终于设法解决了这个问题,并且我这样做了:

    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

    【讨论】:

      【解决方案2】:

      您可以使用$http 在 Angular 中发送 AJAX 请求。

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:
          function ListProdcutsCtrl($scope, $http) {
              var request = {'searchString' : 'apple'};
              $http.get('/api/products', request).success(function(response) {
                  $scope.products_table_data = response.products;
              });
          

          【讨论】:

          • var request = {'searchString' = 'apple'}; ?它应该是 var request = {'searchString' : 'apple'};
          • 我不明白这一点,因为不同的设置 aaa 并且我是一个完整的 noooob... 是否可以给我一个与我在示例中使用的名称相同的解决方案? xD
          【解决方案5】:

          AngularJS 中有一个替代方案,叫做$http,你可以找到more here。 例如:

          $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。

          【讨论】:

          • 谢谢!但那是 JSONP 而不是 JSON?有什么不同?我在执行此操作时收到“Uncaught SyntaxError: Unexpected token :”错误,这可能是为什么?
          • JSONP 允许各种浏览器从另一个域请求 JSON 数据,这通常被浏览器禁止。虽然在我的示例 url 中它不是明确的,但您需要将参数“callback=JSON_CALLBACK”添加到您的 URL(AngularJS 文档中的更多信息)。
          • 我尝试在这里粘贴我的代码,但没有让它工作,所以我扩展了我的问题。知道有什么问题吗?现在感觉自己像个 huuuuge 菜鸟,为我们而努力!
          【解决方案6】:

          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] 是可选的配置对象。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2022-01-13
            • 2011-08-15
            • 2013-05-17
            • 1970-01-01
            • 2021-02-22
            • 1970-01-01
            • 1970-01-01
            • 2012-11-10
            相关资源
            最近更新 更多