2016-04-03 52 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

相关问题