2015-07-03 10 views
0

我想用PHP腳本檢索存儲在mySQL表中的數據。我希望這些數據以數組形式返回,因爲我在AngularJS應用程序中循環遍歷它,並進行各種轉換等。我將數據從數據中提取出來,但它僅作爲數組中的一個項返回,即每行都是不作爲數組的單獨項返回。因爲它代表我的代碼是:mySQL沒有返回一個數組到angularJS

PHP Get請求

<?php 
require 'config.php'; 
$pdo = Database::connect(); 
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

$sql = 'SELECT * FROM user_details'; 

$stmt = $pdo->prepare($sql); 

$stmt->execute(); 

$result = $stmt->fetchAll(PDO::FETCH_ASSOC); 

$json = json_encode($result); 

echo $json; 

Database::disconnect(); 


?> 

角控制器

$scope.userprofiles = []; 
$http.get('php/getUserDetails.php') 
.success(function(data) { 
    $scope.userprofiles = data; 
}); 

我也運行一些測試,看看是什麼問題。具體來說,我看是否變量是一個數組:

$scope.varcheck = $scope.userprofiles.constructor === Array; 

這將返回true。然後我檢查數組的長度:

$scope.numRecords = $scope.userprofiles.length; 

這回0

如果任何人有任何的想法這將是一個很大的幫助。

我也有一個問題,如果一個「/」或「」「存儲在數據庫中,它會引發get請求。我認爲它提前退出。如果有人知道這件事,它會很棒!

感謝,

傑克

+0

你可以使用'typeof'來獲取數據類型。 – Vineet

+0

嗨維尼。當我嘗試typeof時,它返回的是數據是一個對象,而不是數組。看來PHP中的json_encode將數組轉換爲對象而不是數組。你知道如何將它作爲一個對象數組而不是僅僅一個對象出現嗎? –

+0

嗨。所以我發現問題是什麼。我試圖訪問.then函數之外的$ scope.userprofiles。所以我可以把所有的代碼放在.then函數中。但這似乎是一個相當不雅的解決方案。你知道是否有另一個? –

回答

0

$ HTTP方法返回一個承諾,不能重複,所以你必須通過回調來連接結果範圍變量:

$scope.userprofiles = []; 
$http.get('php/getUserDetails.php') 
.then(function(response) { 
    $scope.userprofiles = response.data; 
}); 

希望它能幫助你:-)

+0

嗨維尼。謝謝回覆。我已經嘗試過,發現它只有一半有效。它可以用於ng-repeat或filter之類的東西。但是,如果你想運行一個for循環,它不會工作,因爲它不會將數據識別爲數組。那有意義嗎? –

+0

查看編輯答案 – Vineet

+0

嗨Vineet。再次感謝您回到我身邊。我已經嘗試了第二種選擇。但是它仍然會出現,因爲數組長度爲0.結果現在具有語法[[{...}]]。這很奇怪! –