Как ресурс AngularJS $ отправляет обновленные данные?

Я только начал пытаться изучать AngularJS и пытаюсь заставить работать простое приложение, которое просто отображает и обновляет элементы из базы данных MySQL.

У меня есть PHP rest API, который обрабатывает запросы из приложения.

Пока что API успешно передает все элементы базы данных в JSON-кодированном массиве. Он также передает одну запись, но я не могу получить ее, чтобы обновить запись.

Я не вижу, как измененные данные передаются из приложения в API, когда я нажимаю кнопку сохранения в форме. Он должен передаваться как переменные $ _POST?

Вот код JS, который у меня есть в приложении:

angular.module('starter.services', []).factory('List', function ($resource) {
return $resource('http://example.com/restAPI/:id', { id: '@id' }, {
update: {
method: 'PUT'
}
});
});

angular.module('starter', ['ionic', 'ngResource', 'starter.controllers', 'starter.services'])
.config(function($stateProvider, $urlRouterProvider) {
$stateProvider

.state('list', {
url: '/',
templateUrl: 'templates/list.html',
controller: 'ListController'
})

.state('editItem', {
url: '/items/:id/edit',
templateUrl: 'templates/item-edit.html',
controller: 'EditController'
})

$urlRouterProvider.otherwise('/');
});

angular.module('starter.controllers', [])
.controller('ListController', function ($scope, $state, $stateParams, List) {
$scope.items = List.query();
})

.controller('EditController', function ($scope, $state, $stateParams, List) {
$scope.updateItem=function(){
$scope.item.$update(function(){
$state.go('list');
});
};

$scope.loadItem=function(){
$scope.item=List.get({id:$stateParams.id});
};

$scope.loadItem();
});

Вот код формы:

<form class="form-horizontal" role="form" ng-submit="updateItem()">
<div class="form-group">
<label for="title" class="col-sm-2 control-label">Title</label>
<div class="col-sm-10">
<input type="text" ng-model="item.title" class="form-control" id="title" placeholder="Title Here"/>
</div>
</div>

<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<input type="submit" class="btn btn-primary" value="Save"/>
</div>
</div>
</form>

Когда приложение загружается, начальное состояние — «список», и все элементы из базы данных видны на странице.

Каждый элемент в списке имеет кнопку редактирования. Когда я нажимаю кнопку редактирования, состояние изменяется на «editItem», и новая страница загружается с одним элементом. Все идет нормально.

Когда я изменяю данные и нажимаю кнопку сохранения, вызывается функция updateItem с ng-submit="updateItem()",

Это вызывает API, но я не вижу, как он передает обновленные данные. Когда я пытаюсь error_log($_POST["title"]); в API я вижу «Уведомление PHP: неопределенный индекс: заголовок» в журнале ошибок. Как получить доступ к измененным данным в API, чтобы я мог обновить базу данных?

Это тот .htaccess, который я использую — может ли это быть проблемой? Это тот, который я нашел в интернете, поэтому я очень мало знаю о том, как он работает.

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(.*)$ api.php?id=$1 [QSA,NC,L]

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ api.php [QSA,NC,L]

RewriteCond %{REQUEST_FILENAME} -s
RewriteRule ^(.*)$ api.php [QSA,NC,L]
</IfModule>

0

Решение

Спасибо за ответы, ребята.

@georgeawg — ты поставил меня на правильный путь. Раньше я использовал только GET и POST, тогда как метод обновления использует PUT, как вы указали.

Как только я понял это, я нашел ответ здесь …
Данные запроса REST не могут быть прочитаны методом put

Этот код — то, что работает для меня ….

$data = json_decode(file_get_contents("php://input"), true);
error_log($data['title']);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]