无法在Angular JS中使用$ http.get调用PHP方法

时间:2014-04-04 03:54:39

标签: php angularjs

我是Angular JS的新手。我可以调用一个php文件并获取数据。但是,现在的情况是我需要从php调用特定方法并使用“$ http.get”获取数据。看看我的代码,我是否以正确的方式调用方法?

Angular Code

    // Ajax call for listing countries.
    var countryPromise = $http.get("ListData.php/getCountries()");
    // Create global users array.
    $scope.countriesArray = [];

    countryPromise.success(function(data, status, headers, config) {
        for(index in data) {
            alert(data[index].name);
            $scope.countriesArray.push({
                id:data[index].id,
                name:data[index].name                   
            });
        }
    });
    countryPromise.error(function(data, status, headers, config) {
        alert("Loading countries failed!");
    });

PHP

<?php
class ListData
{
function __construct() {

    // credentials of MySql database.
    $username = "root";
    $password = "admin";
    $hostname = "localhost"; 

    $countryData = array();
    //connection to the database
    $dbhandle = mysql_connect($hostname, $username, $password)
      or die("Unable to connect to MySQL");

    $selected = mysql_select_db("Angular",$dbhandle)
    or die("Could not select Angular");
}
public function getCountries() {

    //execute the SQL query and return records
    $result = mysql_query("SELECT id,name FROM Country");

    //fetch tha data from the database
    while ($row = mysql_fetch_array($result)) {

        $id = $row{'id'};
        $name = $row{'name'};
        $countryData[] = array('id' => $id, 'name' => $name);
    }
    echo json_encode($countryData); 
}

} ?&GT;

2 个答案:

答案 0 :(得分:0)

您需要知道php函数getContries的路由是什么,然后从$ http.get函数调用此路由。

您是否对您的php服务器进行了硬编码,或者您使用的是框架?

答案 1 :(得分:0)

我认为你误解了PHP的工作方式。实际上,您正在尝试使用HTTP请求从类中调用方法。多数人不可能在没有路由类的情况下完成。

路由类它只是一个拦截所有HTTP请求以分析URI的类,并且基于模式,它与预先存在的类匹配,实例化(创建)它并从该类调用所需方法。

例如,我们的路由类有这样的模式:

  

类/方法

拦截像这样的Http请求:

  

www.oursite.com/ListData/getCountries

ListData是我们的类,getCountries是我们的方法或行动。

所以,路由类就是这样做的:

$Class->Method();

当然我们可以实现传递参数,拦截和路由特定的http请求类型,如:post,get,update,delete等。

有很多框架为您制作,但如果您只想使用路由,这里有几个

我推荐的PHP框架(因为我使用过它们):

在任何情况下,如果你不想要任何东西,你可以创建一个名为ListData的文件夹,在其中创建一个名为getCountries.php的文件。在该文件上只需将代码实例化为您的类并调用您的方法。

<?php
include('../ListData.php');
$cIns = new ListData();
$cIns->getCountries();
?>

通过这种方式,它会以你调用url的方式工作(不要忘记在末尾添加.php扩展名(:)