首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用AngularJS在php脚本中调用特定的函数?

如何使用AngularJS在php脚本中调用特定的函数?
EN

Stack Overflow用户
提问于 2016-04-03 22:43:08
回答 1查看 247关注 0票数 0

我正在使用AngularJS访问PHP脚本,但我只想调用一个特定的函数。在下面的app.js脚本中,只需单击按钮即可调用updatePost和deletePost函数。我已经将函数分解成单独的文件,并使用angular的http函数来分别获取它们,它们都工作得很好,但现在我只想将它们存储在functions.php文件中的函数中,但我不确定如何才能单独调用它们?

这是我的app.js脚本

代码语言:javascript
运行
复制
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脚本。

代码语言:javascript
运行
复制
<?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;
    }

?>
EN

回答 1

Stack Overflow用户

发布于 2016-04-03 22:55:05

如果您希望将所有内容都保存在同一个PHP文件中,则可以使用GET变量来拆分函数。

AngularJS app.js文件中引用的URL需要分别修改为functions.php?action=getPostsfunctions.php?action=updatePostfunctions.php?action=deletePost

如果您在前面提到的URL中使用PHP变量,那么您的action应该如下所示:

代码语言:javascript
运行
复制
<?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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36386838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档