2016-04-26 32 views
0

因此,我設法讓我的腳本通過$ http.get獲取一些JSON數據,並在對象窗體中獲取我的JSON數據。但是,我不能使用數組中的值。無法顯示在HTML上收到的JSON數據

JSON in Web Console

這是我的AppCtrl部分(AngularJS)

app.controller('AppCtrl', function($scope,$http) { 


$scope.data = []; 
$scope.submit = function() { 

var link = 'http://www.mywebsite.com/api.asp'; 
$http.get(link).then(function(response) { 
    $scope.data = response.data; 
    console.log($scope.data); 
}); 
}; 
}); 

下面是HTML位

<form ng-submit="submit()"> 
     <input class="button button-block button-positive" type="submit" name="submit" value="Submit To Server"> 
    </form> 
    <div class="card"> 
     <li ng-repeat="userdata in data"> 
      Username : {{userdata.username}} 
      Age : {{userdata.age}} 
     </li> 
    </div> 

Eventhough IVE檢索JSON數據,即時通訊無法進行檢索。我猜它與我有關,不能稱呼它是正確的?提前致謝。

UPDATE:所述的console.log($ scope.data)返回

「0 925121日誌[對象的對象]」

伊夫試圖在response.data運行JSON.stringify ,我現在得到一個不同的控制檯。日誌結果和一個新的錯誤。

的的console.log返回的JSON信息作爲

{ 「數據」:[{ 「ID」:1, 「年齡」: 「24」, 「用戶名」: 「hidir」},{ 「身份證」:2,「年齡」:「51」,「用戶名」:「ibrahim」}]}

而錯誤是下面這表明我有重複的值,在數組中看起來不像它確實如此。 :

"Error: [ngRepeat:dupes] Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: userdata in data, Duplicate key: string:a, Duplicate value: a 
http://errors.angularjs.org/1.5.3/ngRepeat/dupes?p0=userdata%20in%20data&p1=string%3Aa&p2=a 

+0

您可以提供console.log($ scope.data)的輸出,您可以在瀏覽器控制檯中獲得該輸出。 –

+2

是的,就像Deepesh一樣,我懷疑數據不是你所期望的那樣。 – 2ps

+0

在代碼,爲什麼你將用戶名的值綁定到數組數據? – Sarathy

回答

0

你爲什麼不使用成功後的功能$ HTTP調用像下面

$http.get(link).success(function(response) { 
    console.log(response); 
}); 
}; 
+0

這不是一個答案。她已經獲得了json數據。請再次檢查問題。 – Atula

0

嘗試使用JSON.stringify(response.data);

+0

這是一個有趣的選項。我更新了我的問題,並從中得到了一個錯誤。 – dirkaka

1

你能試試嗎?

app.controller('AppCtrl', function($scope,$http) { 
    $scope.name = null; 
    $scope.submit = function() { 
     var link = 'http://www.mywebsite.com/api.asp'; 
     $http.get(link).then(function(response) { 
      $scope.data = response.data; 
      if(!$scope.$$phase) { 
       //$digest or $apply 
       $scope.$apply(); 
      } 
     }); 
    }; 
}); 
+0

添加了$ scope。$ apply(); ,即時獲取另一個錯誤「$摘要已在進行中」,不再獲取JSON數據。 – dirkaka

+0

你可以檢查更新的解決方案嗎? – Abhinav

+0

嘿Abhi,新的不再給出錯誤,但它沒有改變任何東西。 – dirkaka

0

使用這個

$http({ 
    url : link, 
    method : "GET", 
    headers: { 
     'Content-Type': 'applcation/json' 
    } 
}).then(function(response) { 
    console.log(response); 
    $scope.data = angular.fromJson(response.data); 
    console.log($scope.data); 
}); 
+0

由於JSON數據已經是一個對象,所以沒有工作。所以這給了相同的consolelog結果。 – dirkaka

+1

嘗試更新代碼 –

+0

嗨Devidas,這給了我2個JSON數據,但是我仍然面臨同樣的問題。第二個包括狀態,標題等。 – dirkaka

0

感謝@Abhinav的代碼,我發現問題出在我的JSON格式。我希望有人可以在這裏更好地解釋它,因爲我不夠詳細解釋。

*首先JSON格式,沒有工作

{"data":[{"ID":1,"age":"24","username":"hidir"},{"ID":2,"age":"51","username":"ibrahim"}]} 

對於上面的代碼,如果我{{userdata[0].username}}叫它它只會工作。使用這種格式的ng-repeat將失敗。

陣表(離子的工作)

[{"ID":1,"age":"24","username":"hidir"},{"ID":2,"age":"51","username":"ibrahim"}] 

ng-repeat與第二格式效果很好。

+1

實際上早些時候你從api獲取一個對象。那個反對意見是有一些用戶細節。所以,如果你需要使用這些項目,那麼「數據」對象有數組,所以我想或者你可以使用'$ scope.data = response.data.data [0]'或者第二個數組是確定的。 還有一件事是,如果你使用$ http.get()。success(function(response){}),那麼你將直接獲得由api發送的數據,例如$ scope.data = response。但是如果你使用$ http.get()。then(function(response){}),那麼你將使用'data'屬性獲得相同的數據,即$ scope.data = response.data。 – Abhinav