2014-09-21 68 views
0

我正在嘗試在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的更多信息。

謝謝你審查我的問題。

回答

1

您沒有通過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