我是Angular JS的新手。我可以调用一个php文件并获取数据。但是,现在的情况是我需要从php调用特定方法并使用“$ http.get”获取数据。看看我的代码,我是否以正确的方式调用方法?
// 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
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;
答案 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扩展名(:)