0

我需要在 mysql 数据库中计算一个表,为此我需要使用 php。我使用以下代码counttable.php

$query = "SELECT COUNT(*) FROM table";
$result = mysqli_query($connection, $query);

$count = (string)$result;
echo $count;

mysqli_close();

然后我的计划是使用以下 Angular 代码来获取结果:

myApp.factory("count", function($http) {
    return $http.get('counttable.php');
});

在我的控制器中,我使用工厂的successerror功能来控制结果。

count.success(function(data) {
    $scope.data = data;
});

count.error(function(data) {
    console.log("Count failed.");
});

当我运行我的网页时,它会说“计数失败”。在控制台中。我尝试将 php$count变量封装为 JSON json_encode,但这只给了我一个空对象。我猜这可能有一个简单的答案,但我只是看不到它。

请帮助,任何答案都非常感谢!谢谢。

4

3 回答 3

0

感谢您的回复!但是,我无法弄清楚问题所在。我偶然发现了这个问题,我认为这是解决我问题的方法。但是,这也不起作用,我能够从 中获得成功$http.get,但factory没有产生任何数据。

我真的不知道问题是什么,但我设法做了一个“解决方法”来得到我想要的;我没有进行COUNT(*)查询,而是使用SELECT name FROM table. 然后我应用json_decode, 并将数组传递给$http.get,它很乐意接受。然后我刚刚找到了这样的数组长度:

$scope.count = 0;
count.success(function(data) {
    $scope.count = data.length;
});

现在它起作用了..

再次感谢!

于 2014-01-19T20:51:43.350 回答
0

代码似乎没问题。尝试:

console.log(data)

在错误函数上,所以你可以看到什么 php 回显。


另一种方法是使用:

count.then(function(response) {
    console.log(response);
};

当您使用时,您可以获得整个 http web 响应,其中包含数据、状态、标头和配置。这样您就可以更好地调试。

或者你可以只使用:

success(function(data, status, headers, config)
于 2014-01-18T09:47:34.643 回答
0

假设您在 localhost 上运行 Angular 应用程序,例如

http://localhost/myapp/

然后执行 $http.get('counttable.php') 将导致请求

http://localhost/myapp/counttable.php

只需尝试将上述 url 放入您的浏览器并评估它为您提供的错误消息。还要查看您的网络服务器的日志。

要获取有关浏览器和服务器之间的请求/响应通信的更多信息,您可以使用 chrome 中包含的网络分析器(http://net.tutsplus.com/tutorials/chrome-dev-tools-networking- and-the-console/ ),然后您还可以使用它来查看 Angular 应用程序的行为。

丰富您的控制台输出也很有帮助

console.log('Count failed', data);
于 2014-01-18T09:39:23.457 回答