我已尝试将所有内容分配给我的JSON数据(JSON对象?)和$ http.get(" https://server url到我的json数据")。success(function(response){} 到javascript中的局部变量,但它不起作用。我真的很困惑所有这些json字符串和对象。这是我的代码。
我从服务器获取的json数据的格式
mutate
所以,我的问题是如何将这些数据存储在js数组中。我需要它为我的javascript高图控制器。我试过了..
controller.js
{
"status":"success",
"data":{
"user":{
"username":"user1",
"fullName":"name "
},
"vehicles":[ ],
"chargeBoxes":
[
{
"id":1,
"name":"Station 1",
"availability":"offline",
},
{
"id":2,
"name":"Station 2",
"availability":"online",
},
{
"id":3,
"name":"Station 3",
"availability":"online",
}
]
}
//当我这样做时(测试用例)(json变量只有一行并且''
myApp = angular.module('ServiceDashboard');
myApp.controller('DataController' function($scope, $http, $interval) {
$http.get("https://server-url.com/../login?username=..&password=..").success(function(response) {
$scope.jsonData = response.data;
});
var categorieData = [];
var json = JSON.parse(jsonData);
for (var i = 0; i <= jsonData.chargeBoxes.length - 1; i++)
{
categorieData[i] = jsonData.chargeBoxes[i].name;
}
但是当我尝试使用我的json数据的真实形式(带有{}的多行)时,它就无法工作。
// Here I have a json string (one line with ' ')
var jsonData= '{"status": "success", "data": {"chargeboxes":[{..},{..},{..}]}';
// and then I parse this json string to an json object and iterate over it and store the chargeBoxes.name values into the categorieDate array.
我真的不知道该怎么做了。首先,我想尝试使用上面的局部变量(var jsonData = {..};因为使用oneline字符串&#39;&#39;它工作),然后我想使用这个json直接来自服务器的数据($ scope.jsondata ...)。
谢谢!
答案 0 :(得分:0)
$ http.get被称为async。
myApp = angular.module('ServiceDashboard');
myApp.controller('DataController' function($scope, $http, $interval) {
$http.get("https://server-url.com/../login?username=..&password=..").success(function(response) {
$scope.jsonData = response.data;
// >> Put your parse code here
var categorieData = [];
var json = JSON.parse(jsonData);
for (var i = 0; i <= jsonData.chargeBoxes.length - 1; i++)
{
categorieData[i] = jsonData.chargeBoxes[i].name;
}
});
答案 1 :(得分:0)
您的代码中存在多个问题。首先,服务器响应数据不在
中$scope.jsonData = response.data;
但你会在
中找到它$scope.jsonData = response.data.data;
$ http.get返回从服务器发送的响应的json对象。但是响应主体位于要返回的响应对象的data属性中。由于服务器的响应也具有数据属性,因此您需要更深层次。
其次var json = JSON.parse(jsonData);
不起作用。在执行此代码行时,数据不可用。把它放在你$http.get()
方法的成功回调中,你会没事的。
看起来应该是这样的:
myApp = angular.module('ServiceDashboard');
myApp.controller('DataController' function($scope, $http, $interval) {
$http.get("https://server-url.com/../login?username=..&password=..").success(function(response) {
$scope.jsonData = response.data.data;
for (var i in $scope.jsonData.chargeBoxes)
categorieData.push(jsonData.chargeBoxes[i].name);
});
答案 2 :(得分:0)
您需要在$http.get()
调用的成功方法中处理您的jsonData,因为它是异步的。
<强> controller.js 强>
var myApp = angular.module('ServiceDashboard');
myApp.controller('DataController' function($scope, $http, $interval) {
$scope.barChartConfig = { categories: [] };
$http.get("https://server-url.com/../login?username=..&password=..").success(function(response) {
$scope.jsonData = response.data.data;
var json = JSON.parse($scope.jsonData);
var categorieData = [];
for (var i = 0; i <= json.chargeBoxes.length - 1; i++)
{
categorieData.push($scope.jsonData.chargeBoxes[i].name);
}
$scope.barChartConfig.categories = categorieData;
});
答案 3 :(得分:-2)
var url = "http://<domainname>/<url>"
var jsonData = $.ajax({
dataType: "json",
url: url,
data: data,
success: success
});
检查jsonData变量中的json响应。