Javascript 读取Angular JS脚本中的JSON数据,并仅在JS中进一步使用该数据
我已经搜索了很多,在所有情况下,他们通常希望直接在HTML上显示,但我的目的是只使用Angular 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
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);