我正在使用AngularJS访问PHP脚本,但我只想调用一个特定的函数。在下面的app.js脚本中,只需单击按钮即可调用updatePost和deletePost函数。我已经将函数分解成单独的文件,并使用angular的http函数来分别获取它们,它们都工作得很好,但现在我只想将它们存储在functions.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;
}
?>发布于 2016-04-03 22:55:05
如果您希望将所有内容都保存在同一个PHP文件中,则可以使用GET变量来拆分函数。
AngularJS app.js文件中引用的URL需要分别修改为functions.php?action=getPosts、functions.php?action=updatePost和functions.php?action=deletePost。
如果您在前面提到的URL中使用PHP变量,那么您的action应该如下所示:
<?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;
}
?>https://stackoverflow.com/questions/36386838
复制相似问题