2014-09-21 3 views
0

Я пытаюсь разработать приложение в Laravel 4 и Angular JS, мое приложение позволяет пользователю получать свою информацию через систему с помощью Text Change.Laravel 4 не может получить данные от Angular Ajax

Угловой используется для передачи данных от пользователя в Laravel, который, в свою очередь, получает информацию из базы данных.

Однако Laravel не может получить данные, переданные из Углового.

Посмотреть

<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, а вместо этого передаете только значение без параметра. Таким образом, вы пытаетесь получить значение от scanRID, используя Input::get('scanRID');, но без параметра scanRID. что должно быть в случае Ур не получает значение :)

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

ИЛИ

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

изменения как этот

+0

Я попытался 2-ое решение, и теперь мое приложение работает нормально. Большое вам спасибо за вашу помощь! Я проголосую за это решение в следующий раз, когда смогу, в настоящее время у меня слишком мало репутации, чтобы проголосовать за ваш ответ. – Cityman

+0

Да, хорошо. без проблем :). рад, что это помогает u :) –

Смежные вопросы