2014-08-29 54 views
0

我在routes.php文件文件中定义的路线,但是当我做从我的角度应用Ajax请求,我得到这个错误定义路线投掷控制器的方法没有找到laravel 4

{"error":{"type":"Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException","message":"Controller method not found.","file":"C:\\xampp\\htdocs\\tedxph\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Controllers\\Controller.php","line":290}} 

这是我的路线文件

/* 
|-------------------------------------------------------------------------- 
| Api Routes 
|-------------------------------------------------------------------------- 
*/ 

Route::group(array('prefix' => 'api'), function() { 
    //Auth Routes 
    Route::post('auth/login', '[email protected]'); 
    Route::post('auth/signup', '[email protected]'); 
    /* Persons */ 
    Route::group(array('prefix' => 'people'), function() { 

     Route::get('{id}', '[email protected]'); 
     Route::get('/', '[email protected]'); 
    }); 
    /* Events */ 
    Route::group(array('prefix' => 'events'), function() { 

     Route::get('{id}', '[email protected]'); 
     Route::get('/','[email protected]'); 
    }); 
}); 

chrome web inspector Same post request in a rest client app on chrome 访问相同的URL (http://localhost/site/public/api/auth/signup)从铬休息客户端应用程序不给任何错误,这可能是错了吗?

这是从我的控制器的角码

$rootScope.show('Please wait..registering'); 
       API.register({email: email, password: password}) 
       .success(function (data) { 
        if(data.status == "success") { 
         console.log(data); 
         $rootScope.hide(); 
        } 
       }) 
       .error(function (error) { 
        console.log(error) 
        $rootScope.hide(); 
       }) 

更加棱角分明代码

angular.module('tedxph.API', []) 
    .factory('API', function ($rootScope, $http, $ionicLoading, $window) { 
    //base url 
    var base = "http://localhost/tedxph/public/api"; 

    return { 
     auth: function (form) { 
      return $http.post(base+"/auth/login", form); 
     }, 

     register: function (form) { 
      return $http.post(base+"/auth/signup", form); 
     }, 

     fetchPeople: function() { 
      return $http.get(base+"/people"); 
     }, 

     fetchEvents: function() { 
      return $http.get(base+"/events"); 
     }, 
    } 
}); 
+0

你想POST或GET?因为您已将它设置为POST请求。 – Lynx 2014-08-29 19:00:44

+0

其在API.register()方法中使用$ http.post的发布请求 – MrFoh 2014-08-29 19:02:48

回答

1

解决了这个问题,我的控制器正在调用控制器类中未定义的方法。 正确地重命名了该方法,现在请求正常工作,谢谢各位输入。

3

它会帮忙看看你使用,使角请求的代码,以及来自Chrome的Network -> XHR记录器的标题信息,但我的第一个猜测是Angular会发送带有GET方法的AJAX请求,而不是POST方法。尝试更改Agular以发送明确的POST或更改routes.php,因此auth/signupGETPOST请求均作出响应。

更新看你的屏幕截图,AJAX请求返回错误记录到或者您的laravel.log文件或你的PHP/web服务器错误日志500应该有信息的,为什么错误发生。我的猜测是,如果你的Angular请求发送了你的Chrome/REST-app所做的不同信息,并且会触发出现错误的代码路径。

+0

屏幕截图显示它是一个POST请求。 – 2014-08-29 19:05:31

相关问题