【问题标题】:Handling $resource request from PHP backend using SLIM使用 SLIM 处理来自 PHP 后端的 $resource 请求
【发布时间】:2014-06-26 07:48:36
【问题描述】:

我在从 AngularJS 访问我的 PHP 后端时遇到问题。

我已关注:

http://coenraets.org/blog/2012/02/sample-application-with-angular-js/

Routing with AngularJS and Slim PHP

还有一些其他的,但那些是相似的。我已经解决了几天的问题,但仍然无法正常工作。

第一种调用我的 php 脚本的方法

app.controller('PhoneDetailCtrl',function($scope, $modal, $resource) {
var request_Id = 1;
var Request = $resource('http://mobiiltelefonid24.ee/api/kasutatud_telefonid/'+request_Id);
$scope.request = Request.get();} //this way I get code 200 but 119 empty chars.. So I figure routing should be correct?

我尝试的第二种方法

app.controller('PhoneDetailCtrl',function($scope, $modal, Service) {
$scope.request =  Service.get({id:1});} //this gives me code 200 but 119 empty chars...

app.service('Service', function ($resource) {
return $resource('api/kasutatud_telefonid/:id', {}, {
    update: {method:'PUT'}
});});

PHP代码(使用mysql db)

require 'Slim/Slim.php';

$app = new Slim();

$app->get('/', 'getPopularPhones');
$app->get('/uued_telefonid','getNewPhones');
$app->get('/kasutatud_telefonid','getUsedPhones');
$app->get('/uued_telefonid/:id', 'getPhoneDesc');
$app->get('/kasutatud_telefonid/:id', 'getPhoneDesc');

$app->run();

/*Other get methods are exactly the same but with different name*/

function getPhoneDesc($id) {
    $sql = "SELECT * FROM Phone";
    try {
        $db = getConnection();
        $stmt = $db->query($sql);  
        $wines = $stmt->fetchAll(PDO::FETCH_OBJ);
        $db = null;
        echo json_encode($wines);
    } catch(PDOException $e) {
        echo '{"error":{"text":'. $e->getMessage() .'}}'; 
    }
}

getConnection() 的实现如 wine 应用教程所示。 db 中有一行有 21 个列,所以它应该返回一些东西。还尝试传递字符串$wine="teststring",但它也以 jibbrjabbre 的形式到达。

是路由错误还是从数据库查询有问题? (我可以从 phpMyAdmin 查询就好了)。没有想法...

【问题讨论】:

  • 看起来我没有连接到我的数据库。看来主机不再是本地主机了......当我从 github 导入 wine 应用程序时,wine db 通过本地主机连接就好了,但这个没有。也许我必须通过某个端口连接?
  • 写类似 echo 'Routed here';作为 getUsedPhones() 中的唯一行,如果返回此答案,请在控制台中查看。如果不是,则问题可能与错误的超薄设置有关。直接在浏览器工具栏中输入网址mobiiltelefonid24.ee/api/kasutatud_telefonid。告诉我结果,我们会进一步观察。
  • echo 'test' 返回 {"0":" ","1":" ","2":" ","3":" "} 到控制台并且 url 导致为空页面。
  • 嗯,这就是我的预期。如果这是函数中的唯一行,它应该只返回“test”。如果我从这里调用mobiiltelefonid24.ee/api/kasutatud_telefonid/1,我会得到一个 4 字节的结果,但什么也看不到。但路由似乎有效。
  • 也许可以试试免费的 php-mysql 库,比如 meekroDB meekro.com,它比 pdo 有一些优势和一些很酷的调试功能。非常适合我的纤薄设置。

标签: php mysql angularjs


【解决方案1】:

解决了! Slim 配置错误,meekroDB 运行良好(感谢 mainguy)。最重要的是,网络主机方面存在一些问题。

【讨论】:

  • 也解决了数据问题。 Slims json_encode 不知何故损坏了。作为一个解决方案,我根本没有使用 Slim,而是自己编写了路由逻辑。
猜你喜欢
  • 2013-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-15
  • 2019-01-26
  • 1970-01-01
相关资源
最近更新 更多