2017-05-02 6 views
1

Ich bin neu in der Webentwicklung und so könnte dies ein einfaches Problem für einige und hoffentlich ein nützlicher Thread für andere Anfänger sein.Wie ein JSON von PHP an AngularJS übergeben werden

Ich wähle einige Daten (Konten) aus einer MySQL-Datenbank mit einem PHP-Skript. Ich möchte, dass diese ausgewählten Daten an eine Winkelvariable übergeben werden, sodass ich die Ausgabe mithilfe von ngRepeat erstellen kann. Was muss ich in meinen PHP- und/oder Angular-Dateien ändern?

Nun, da das JSON erstellt wird, ist das Problem, dass ich nicht auf den HTML-Code zurückkomme, den ich PHP genannt habe. Wie kann ich das schaffen?

Vielen Dank für Ihre Hilfe Chris

HTML

<form action="./backend/display_accounts.php" method="post"> 
    <input class="btn btn-default" type="submit" value="display accounts"/> 
</form> 
<ul> 
    <li ng-repeat="account in accounts"> 
    {{ account.account_name }} 
    </li> 
</ul> 

PHP

<?php 
include 'connect.php'; 
$sql = //myQuery// 
$result = $conn->query($sql); 
//return ($result); 
if ($result->num_rows > 0) { 
while($row = $result->fetch_assoc()) { 
$json_arry = json_encode($row); 
echo $json_array;} 
} 
else { 
     echo "0 results"; 
} 
$conn->close(); 
?> 

AngularJS

var app = angular.module("myApp", ['ngRoute']) 
app.controller('accountsController', function($scope, $http) { 
$scope.displayData = function(){ 
$http.get("./backend/display_accounts.php") 
.then(function (response) {$scope.accounts = response.data.records;}); 
}; 
}); 
+0

in HTML-Anzeige Wo Stehen Sie vor dem Problem? Erhalten Sie irgendeinen Fehler von irgendwo? – mi6crazyheart

+0

Das Problem ist, dass ich kein Ergebnis auf der Seite sehe. Aber ich denke, das könnte vor dem HTML mit dem $ http.get sein. Wie kann ich das Problem eindeutig lokalisieren? – Krs81

+0

Nun, da das JSON erstellt wurde, ist das Problem, dass ich nicht zu dem HTML-Code zurückkomme, von dem ich den PHP-Code aus aufgerufen habe. Wie kann ich das schaffen? – Krs81

Antwort

1

Da Sie bereits die da erhalten haben ta in eine Variable (Konten). Sie können folgenden Code im HTML verwenden, um die Ergebnisse zu sehen

+0

Bitte fragen Sie mich, wenn Sie eine Klarstellung benötigen. Ich kann verstehen, dass du ein Neuling zu Angular bist :-) –

+0

Schöne Antwort, aber ich denke du solltest das klar für ihn erklären. Wenn Sie {{account}} verwenden, erhalten Sie die JSON-Datei – Akashii

+0

@ ThanhTùng: Danke für die Überlegung. Ich habe deinen Standpunkt :-) –

0

Ich denke, Sie sollten ein bisschen ändern. In PHP

$sql = //myQuery// 
$row = array(); //here is change 
$result = $conn->query($sql); 
return ($result); 
if ($result->num_rows > 0) { 
while($r= $result->fetch_assoc()) { 
$row[]= $r; //here is change 
$json_arry = json_encode($row); 
echo $json_array; 
} 

Und in Winkel

$http.get("./backend/display_accounts.php") 
.then(function (response) {$scope.accounts = response.data;}); //you dont need record in here if json file of you dont have the key records 
}; 

wenn JSON-Datei von Ihnen wie Sie Datensätze benötigen, sollten aber, wenn nicht. Du brauchst es nicht.

{"records": 
[ 
{// your data}]} 

Wenn JSON-Datei von Ihnen einen haben, b, c oder irgendeine Sache statt Aufzeichnungen, sollten Sie dieses

$scope.accounts = response.data.a; //a b c or some thing for ex I use a 

schreiben Und Sie können wie

<ul ng-repeat= account in accounts> 
<account. ...> 
</ul> 
Verwandte Themen