2017-05-06 2 views
0

Ich arbeite an einigen CRUD-Operationen für eine Angular-App, die mit einer PHP-API auf dem Server kommuniziert. Ich bin sehr neu in PHP, deshalb habe ich Probleme zu analysieren, was ich an die delete.php sende, wenn ich einen Eintrag in der Datenbank löschen möchte. Wenn ich die ID des Datensatzes in den Data-Eigenschaften der Anfrage sende, bringt das den Namen mit dem Wert, also enthält Data beispielsweise 'id = 1'.JSON-Objekt analysieren - Angularjs + PHP

Auf der PHP-Seite ging ich ein Beispiel, das $ _Post ['id'] verwendet, um die Bedingung für das Löschen zu bekommen, aber von dem, was ich sagen kann, funktioniert nicht, weil ich eine s sende Datei, die nicht mit diesem Namen übereinstimmt. Ich weiß, dass es Möglichkeiten gibt, zu JSON zu enkodieren oder anderweitig den Wert auf dem PHP-Ende zu bekommen, aber ich habe es ausprobiert und was immer ich daraus gemacht habe löscht die gesamte Tabelle und nicht den Eintrag, den ich spezifizieren möchte.

Wie soll ich die Daten sammeln und analysieren, damit sie in die Funktion delete() passen?

In dem App.js:

$http({ 
     method: 'POST', 
     url: 'http://localhost:8080/sns/delete.php', 
     data: {id: user.id} 
    }).success(function(response){ 
     if(response.status == 'OK'){ 
       var index = $scope.users.indexOf(user); 
       $scope.users.splice(index,1); 
     } 
    }); 

delete.php:

<?php 

include 'DB.php'; 

$db = new DB(); 
$tblName = 'members'; 
      if(!empty($_POST['id'])){ 
       $condition = $_POST['id']; 
       $delete = $db->delete($tblName,$condition); 
       if($delete){ 
        $data['status'] = 'OK'; 
        $data['msg'] = 'User data has been deleted successfully.'; 
       }else{ 
        $data['status'] = 'ERR'; 
        $data['msg'] = 'Some problem occurred, please try again.'; 
       } 
      }else{ 
       $data['status'] = 'ERR'; 
       $data['msg'] = 'POST id was, please try again.'; 
      } 
      echo json_encode($data); 
      exit; 

Antwort

1

dies versuchen und in dann sollten Sie in der Lage sein, $ _POST zu nennen [ "id"] in Ihrem PHP-Skript .

Dies sollte für andere Anfrage ohne irgendeine Änderung außer der URL und den Datenfeldern funktionieren.

$http({ 
    method: 'POST', 
    url: 'http://localhost:8080/sns/delete.php', 
    data: {id: user.id}, 
    headers: { 
      'Content-Type': 'application/x-www-form-urlencoded' 
    }, 
    transformRequest: function (data) { 
     transformedData=""; 
     keys=Object.keys(data);values=Object.values(data); 
     for (i in keys) 
      transformedData+=keys[i]+"="+values[i]+"&"; 
     return transformedData; 
} 
}).success(function(response){ 
    if(response.status == 'OK'){ 
      var index = $scope.users.indexOf(user); 
      $scope.users.splice(index,1); 
    } 
}); 
+0

Das funktionierte perfekt !! Du bist ein absoluter Star - Danke! – StolenSheep