2016-04-03 54 views
0

我正在使用AngularJS來訪問一個PHP腳本,但我只想調用一個特定的函數。在updatePost和deletePost函數下面的app.js腳本中,通過按鈕單擊來調用。我已經把這些函數分解成單獨的文件,並使用angular的http函數來單獨獲取它們,它們都工作正常,但現在我只是想將它們存儲在functions.php文件中的函數中,但我不知道該如何調用它們獨立?如何使用AngularJS在php腳本中調用特定的函數?

這裏是我的app.js腳本

var app = angular.module('adminPanel', ['ngRoute', 'ngAnimate']) 

.config(['$routeProvider', 
    function($routeProvider) { 
    $routeProvider. 
     when('/dashboard', { 
     templateUrl: 'includes/main.php', 
     controller: 'MainCtrl' 
     }). 
     otherwise({redirectTo: '/dashboard'}) 
    }]) 

.controller('MainCtrl', ['$scope', '$http', function($scope, $http) { 
    getPosts(); 
    function getPosts() { 
     $http.post('functions.php').success(function(data) { 
      $scope.posts = data; 
     }); 
    } 
    $scope.updatePost = function(post) { 
     $http.post('functions.php',{"id":post.id,"title":post.title,"description":post.description,"category":post.category,"status":post.status}).success(function(data) { 
      if (data == true) { 
       getPosts(); 
      } 
     }); 
    } 
    $scope.deletePost = function(post) { 
     if (confirm("Are you sure you want to delete this post?")) { 
      $http.post('functions.php',{"id":post.id}).success(function(data) { 
       if (data == true) { 
        getPosts(); 
       } 
      }); 
     } 
    } 
}]); 

這是我的PHP腳本。

<?php 
    $connect = mysqli_connect('localhost', 'root', '', 'cms1'); 

    function getPosts() { 
     global $connect; 
     $query = "SELECT * FROM posts"; 
     $result = mysqli_query($connect, $query); 
     $posts = array(); 
     while ($row = mysqli_fetch_assoc($result)) { 
      $posts[] = $row; 
     } 
     echo $json_info = json_encode($posts); 
    } 

    function updatePost() { 
     global $connect; 
     $data = json_decode(file_get_connecttents("php://input")); 

     $id = mysqli_real_escape_string($connect, $data->id); 
     $title = mysqli_real_escape_string($connect, $data->title); 
     $description = mysqli_real_escape_string($connect, $data->description); 
     $image = mysqli_real_escape_string($connect, $data->image); 
     $category = mysqli_real_escape_string($connect, $data->category); 
     $status = mysqli_real_escape_string($connect, $data->status); 

     $query = "UPDATE posts SET title='$title',description='$description',image='$image',category='$category',status='$status' WHERE id=$id"; 
     mysqli_query($connect, $query); 
     echo true; 
    } 

    function deletePost() { 
     global $connect; 
     $data = json_decode(file_get_contents("php://input")); 
     $query = "DELETE FROM posts WHERE id=$data->id"; 
     mysqli_query($connect, $query); 
     echo true; 
    } 

?> 

回答

0

如果要將所有內容保存在同一個PHP文件中,可以使用GET變量來分解函數。

您的AngularJS app.js文件中引用的URL將分別需要修改爲functions.php?action=getPosts,functions.php?action=updatePostfunctions.php?action=deletePost

如果你在前面提到的URL使用action GET變量,你的PHP應該是這個樣子:

<?php 
    $connect = mysqli_connect('localhost', 'root', '', 'cms1'); 

    if ($_GET['action'] === 'getPosts') 
    { 
     global $connect; 
     $query = "SELECT * FROM posts"; 
     $result = mysqli_query($connect, $query); 
     $posts = array(); 
     while ($row = mysqli_fetch_assoc($result)) { 
      $posts[] = $row; 
     } 
     echo $json_info = json_encode($posts); 
    } 

    else if ($_GET['action'] === 'updatePost') 
    { 
     global $connect; 
     $data = json_decode(file_get_connecttents("php://input")); 

     $id = mysqli_real_escape_string($connect, $data->id); 
     $title = mysqli_real_escape_string($connect, $data->title); 
     $description = mysqli_real_escape_string($connect, $data->description); 
     $image = mysqli_real_escape_string($connect, $data->image); 
     $category = mysqli_real_escape_string($connect, $data->category); 
     $status = mysqli_real_escape_string($connect, $data->status); 

     $query = "UPDATE posts SET title='$title',description='$description',image='$image',category='$category',status='$status' WHERE id=$id"; 
     mysqli_query($connect, $query); 
     echo true; 
    } 

    else if ($_GET['action'] === 'deletePost') 
    { 
     global $connect; 
     $data = json_decode(file_get_contents("php://input")); 
     $query = "DELETE FROM posts WHERE id=$data->id"; 
     mysqli_query($connect, $query); 
     echo true; 
    } 
?> 
+0

我嘗試過,但它不會顯示該帖子嗎? – sidlack

相關問題