Laravel 4无法从Angular Ajax获取数据

问题描述:

我正在尝试在Laravel 4和Angular JS中开发我的应用程序,我的应用程序允许用户通过文本更改通过系统检索其信息。Laravel 4无法从Angular Ajax获取数据

Angular用于将用户输入的数据传递给Laravel,Laravel依次从数据库中检索信息。

但是Laravel无法检索从Angular传递的数据。

查看

<div data-ng-controller="ReservationController"> 
<input id='ERI' type='text' data-ng-model="scanRID" data-ng-change="queryRes()" name='exampleInput' maxlength='3' /> 
</div> 

角厂

app.factory('exampleFactory', function($http) { 
    var factory = {}; 
    factory.getExample = function(scanRID) { 
     return $http({ 
      method: 'GET', 
      url: LARAVEL_CONTROLLER + 'Example', 
      data: $.param(scanRID) 
     }); 
    }; 
    return factory; 
}); 

角控制器

app.controller('exampleController', function($scope, $http, exampleFactory) { 
    $scope.queryRes = function() { 
     if($scope.scanRID.length == 3) { 
      exampleFactory.getExample($scope.scanRID) 
       .success(function (data) { 
       // Do Something Here 
       }) 
       .error(function (data) { 
        console.log(data); 
       }); 
     } 
    }; 
}); 

Laravel 4路由

Route::get('Example', '[email protected]'); 

Laravel 4 ExampleController

class ExampleController extends \BaseController { 

    public function show() 
    { 

     $id = Input::get('scanRID'); // This here might be wrong. It's always empty! 

     $data = ExampleModel::find($id); // Able to query and retrieve. 

     return Response::JSON($data); // Returns empty. 
    } 

} 

Laravel 4 ExampleModel

class ExampleModel extends Eloquent { 

    // The id of this table is what I want, but I can't retrieve it. 
    protected $fillable = ['id', 'ExampleData1', 'ExampleData2']; 

    protected $table = 'exampleTable'; 
} 

我也到处去寻找一个解决方案,似乎每个人都能够成功地使Ajax调用。我认为我错过了一些我不了解的东西。

我也尝试设置CSRF令牌,但是,我不认为这是一个问题。所以我最后的手段是找专家,希望有人能够帮助我。

在附注中,我对Laravel和Angular相当陌生,因此如果您发布解决方案,请向我解释此问题,因为我想了解有关Angular和Laravel的更多信息。

谢谢你审查我的问题。

您没有通过scanRID参数传递scanRID的值,而是只传递没有参数的值。因此,您尝试使用Input::get('scanRID');来获取scanRID的值,但没有scanRID参数。这应该是乌拉圭回合没有得到值的情况下:)

return $http({ 
     method: 'GET', 
     url: LARAVEL_CONTROLLER + 'Example', 
     data: $.param({scanRID:scanRID})    //Change Here 
    }); 

OR

return $http({ 
    method: "GET", 
    url: LARAVEL_CONTROLLER + 'Example', 
    params: {scanRID:scanRID}       //Change Here 
); 

改变这样

+0

我尝试了第二的解决方案,现在我的应用程序工作正常。非常感谢你的帮助!我会在下一次投票支持该解决方案时,目前我的名声太低,无法投票回答。 – Cityman 2014-09-21 07:48:53

+0

是的。没问题 :)。很高兴它有助于你:) – 2014-09-21 08:09:20