如何从角度js从php函数中获取数据

时间:2018-03-22 13:46:54

标签: php angularjs

我知道ajax是如何工作的,但我想知道如何从特定的php函数中检索数据,所以我不为每个函数创建一些页面1页面可以完成所有的工作。

AngularJs:

function abc(){
echo 'abc';
}

腓:

NotificationCompat.Builder

4 个答案:

答案 0 :(得分:1)

问题是你的PHP文件。你应该这样做:

<?php

$post_date = file_get_contents("php://input");
$data = json_decode($post_date);

//now i am just printing the values
echo "Name : ".$data->name."n";

在PHP页面中,我们将检索json数据并使用它json_decode进行解码。请记住,这只是一个例子,因为您可以改进代码。我只是给你一个极简主义的方式来做到这一点。

如果您需要其他相关内容,请与我联系。

/////// 新编辑 - 将变量发送到PHP ///////

<强>角

$http({
        url: "urltopost.php",
        method: "POST",
        data: {
            data: variable
        }
    }).success(function(response) {
    console.log(response);
});

<强> PHP

<?php
$request = json_decode( file_get_contents('php://input') );
$variable = $request->data

答案 1 :(得分:0)

将另一个键添加到data设置以获取特定功能的特定输出。 只是让它成功的想法,根据需要进行修改

  1. 包含所有方法/功能的单个文件
  2. 单个班级管理所有ajax调用。
  3. 单个json回应电话。
  4. JS

    data: {
        name: 'myname',
        _method: 'my_custom_function',
    },
    

    然后在PHP中检查请求哪个函数需要调用特定任务。

    使用$_REQUEST非常有用天气请求POSTGET它总是可以缓存,然后由method_exists验证,如果类中存在方法,它将由{call_user_func执行1}}来自给定的类实例。

    function.php

    class Ajax_calls{
        // ... multiple functions goes here
        public function my_custom_function() {
          // Your logics
        }
    }
    
    if( isset( $_REQUEST ) ) {
        $obj    = new Ajax_calls();
        $method = $_REQUEST['_method'];
        if( method_exists($obj, $method) ) {
            $data = call_user_func(array($obj, $method));
            echo json_encode($data);
        }
        else {
            echo json_encode("no function found");
        }
    }
    

答案 2 :(得分:0)

为什么不通过选择要执行的功能的函数将代码添加到php文件中?检查要发送到functions.php的变量的值,然后做出决定。例如:

$action = $_GET["name"];
switch ($action){
    case "myname":
        abc();
        break;
    default:
        echo "";
        break;
}

function abc(){
    echo "abc";
}

我更喜欢分离&#34;控制器&#34;的逻辑。和函数文件有一个controller.php

require_once('functions.php');
$action = $_GET["name"];
switch ($action){
    case "myname":
        abc();
        break;
    default:
        echo "";
        break;
}

和一个functions.php

function abc(){
    echo "abc";
}

但那取决于你

答案 3 :(得分:-3)

您可以通过将函数名称作为GET变量传递来实现。然后使用eval ()

var app = angular.module("myapp",[]);
app.controller("usercontroller",function($scope,$http){
    $http({
        method : "GET",
        data: "fx=abc",
        dataType: "text",
        url : "functions.php",
        data: {
            name: 'myname',
        },
    }).then(function mySuccess(response) {
        $scope.myWelcome = response.data;
    }, function myError(response) {
        $scope.myWelcome = response.statusText;
    });
});

if (function_exists ($_GET['fx']))
    eval ($_GET['fx'].'();');

function abc(){
    echo 'abc';
}