Javascript 读取Angular JS脚本中的JSON数据,并仅在JS中进一步使用该数据

Javascript 读取Angular JS脚本中的JSON数据,并仅在JS中进一步使用该数据,javascript,angularjs,json,Javascript,Angularjs,Json,我已经搜索了很多,在所有情况下,他们通常希望直接在HTML上显示,但我的目的是只使用Angular JS中的数据 angular.module('myApp').factory('UserService', ['$http', '$q', function($http, $q){ var url ; $http.get('/HomeAccessService-1/static/js/data.json').then(function(response) { ur

我已经搜索了很多,在所有情况下,他们通常希望直接在HTML上显示,但我的目的是只使用Angular JS中的数据

angular.module('myApp').factory('UserService', ['$http', '$q', function($http, $q){

    var url ;
    $http.get('/HomeAccessService-1/static/js/data.json').then(function(response) {
        url = response.data;
        //alert(JSON.stringify(url.data));
        });
    //var REST_SERVICE_URI = 'http://localhost:8080/HomeAccessService-1/user/';
    var REST_SERVICE_URI = JSON.stringify(url.data);
    var factory = {
        fetchAllUsers: fetchAllUsers,
        createUser: createUser,
        updateUser:updateUser,
        deleteUser:deleteUser
    };

return factory;

    function fetchAllUsers() {
        var deferred = $q.defer();
        $http.get(REST_SERVICE_URI)
            .then(
            function (response) {
                deferred.resolve(response.data);
            },
            function(errResponse){
                console.error('Error while fetching Users');
                deferred.reject(errResponse);
            }
        );
        return deferred.promise;
    }
我想在其他方法中使用此url数据,该数据实际上是我放入
data.json
文件中的RESTAPI url

{"data":"http://someotherip:8080/Service/user/"}
报警时显示对象对象


我不想在HTML中显示它,但要在angular js方法中使用数据。

您应该在promise中调用警报,否则当您发出警报时,它将是未定义的

  $http.get('/Service-1/static/js/data.json').then(function(response) {
        url = response.data;
        alert(JSON.stringify(url.data));
   });*/
为了显示正确的数据,应该使用JSON.stringify()

alert(JSON.stringify(url.data));

警报在您的响应到达之前显示。在请求承诺中加入警告。你会得到答复的。
然后使用
json.stringify(response.data)
生成一个json字符串 1.添加
REST\u SERVICE\u URI=..
而不是该警报语句或 2.在
fetchAllUsers
函数中添加这些geturl调用,然后在获得
resopnse.data

//// Add url part inside get response
var url;
var REST_SERVICE_URI;
$http.get('/HomeAccessService-1/static/js/data.json').then(function(response) {
    url = response.data;
    REST_SERVICE_URI = JSON.stringify(url.data);
});
...

//// OR do it in sync

function fetchAllUsers() {
    var deferred = $q.defer();
    $http.get('/HomeAccessService-1/static/js/data.json').then(function(response) {
      url = response.data;
      REST_SERVICE_URI = JSON.stringify(url.data);
      $http.get(REST_SERVICE_URI)
          .then(
          function (response) {
              deferred.resolve(response.data);
          },
          function(errResponse){
              console.error('Error while fetching Users');
              deferred.reject(errResponse);
          }
      );
    });
    return deferred.promise;
}

将所有json放在一个javascript变量中,然后使用循环或变量(如jsondata.url)转换,并在将来的api调用中使用它。

尝试在函数内部发出警报。我不想发出警报,我使用警报只是为了查看值,目的是使用url值,下面是一个对象object将响应存储在$scope变量中,并在JS中的任何位置使用它$scope.url=response.data;英语是最糟糕的语言ever@anshulkatta使用answerok中提到的JSON.stringify它可以工作,但是我如何将它传递给另一个变量(比如var REST_SERVICE_URI)并在同一个angular js文件中的其他方法中使用它,定义一个angular常量并赋值并在整个文件中使用它?我正在这样做-var url;$http.get('/HomeAccessService-1/static/js/data.json')。然后(函数(response){url=response.data;警报(json.stringify(url.data));})//var REST_SERVICE_URI='';var REST\u SERVICE\u URI=JSON.stringify(url.data);但是当我使用var REST\u SERVICE\u URI=JSON.stringify(url.data)时,在chrome控制台的Object.fetchAllUsers上没有定义获取REST\u服务\u URI;在http调用之外,我在UI中得到错误-无法读取未定义的$http.get(“./data/data.json”)的属性“data”。(function(response){var data=response;console.log(data);});我得到的$scope没有定义您在代码中添加了依赖项注入的ID吗?类似于-->
app.controller('myCtrl',['$scope',function($scope){…}])
Ok刚才看到了您添加
factory
的升级问题。当你调用
fetchAllUsers
时,你并没有确切的“url”!你可以做两件事中的一件。添加
REST\u SERVICE\u URI=..
而不是该警报语句或2。在
fetchAllUsers
函数中添加这些geturl调用,然后在获得resopnse.dara后执行下一步操作
 $scope.jsondata=json.stringify(response.data)
     console.log(jsondata.url);