Intereting Posts
Отключить или удалить apc Какая функция в php проверяет правильность строки? FatalErrorException в строке route.php 22: Class 'Painting' not found Как получить имя файла под папкой? Как я могу присоединиться к документам Excel с помощью PHPExcel? Когда я должен объявлять переменные в классе PHP? Обновить DOM с помощью jquery после вызова AJAX Как включить образ из относительного каталога в корневой каталог в php «Content-Type: text / plain» заставляет загружать файл Как использовать DoctrineModule \ Validator \ NoObjectExists в редактируемых формах – Zend Framework 2 & Doctrine 2 WooCommerce – автоматическое обновление общей цены при изменении количества Когда im отправляет запрос Ajax в моем веб-приложении, тогда сторона контроллера дает мне скрипт в параметре запроса в laravel Совместить весь текст между двумя тегами HTML, используя регулярное выражение в PHP Разбивка страницы (Предыдущая | Следующая) с Smarty Массив суммы значения, основанный на том же ключе

не удалось получить правильные данные с помощью метода почтовой отправки AngularJS

это мой первый раз с AngulerJS. Я пытаюсь POST данные POST на сервер.

Код AngularJS

  var app = angular.module("myApp", []); var BASE_URL = "http://localhost/project/api/Data/"; var GET_DATA = BASE_URL+"get_data"; console.log(GET_DATA); app.controller('myCtrl', function($scope, $http) { var inputs = { "user_id": "3"}; var config = { headers : { 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;' } } $http.post(GET_DATA , inputs, config) .success(function (response, status, headers, config) { $scope.content = response.error; $scope.statuscode = response.status; $scope.statustext = response.statusInfo; console.log(response); }) .error(function (data, status, header, config) { $scope.ResponseDetails = "Data: " + data + "<hr />status: " + status + "<hr />headers: " + header + "<hr />config: " + config; }); }); 

Этот код отправляет данные на сервер, но с каким-то проводным форматом. Ниже мой print_r($_POST); результат:

 Array ( [{"user_id":"3"}] => [0] => ) 

это неправильный результат, я ожидаю чего-то вроде

 Array ( user_id => 3 ) 

Примечание. Я использую структуру CodeIgniter на стороне сервера.

Вы можете отправить свои данные в json :

 $http.post(GET_DATA , {"user_id": "3"}) .success(function (response, status, headers, config) { $scope.content = response.error; $scope.statuscode = response.status; $scope.statustext = response.statusInfo; console.log(response); }) .error(function (data, status, header, config) { $scope.ResponseDetails = "Data: " + data + "<hr />status: " + status + "<hr />headers: " + header + "<hr />config: " + config; }); }); 

И на стороне сервера вы можете получить такие данные:

 $postdata = json_decode(file_get_contents('php://input')); print_r($postdata); 

Вы должны кодировать свои данные в теле сообщения в urlencoded формате, когда типом содержимого запроса является application / x-www-form-urlencoded`. Что должно быть так:

 var inputs = 'student_id=3'; 

Хотя неправильная практика заключается в написании ответа на старый вопрос, но я хочу опубликовать этот ответ, чтобы другие могли получать помощь, когда это требуется.

Во-первых, поймите, почему это происходит. Причина в том, что AngularJS не сериализует данные (параметры), переданные в запрос POST автоматически. Поэтому мы должны сериализовать данные с помощью $httpParamSerializerJQLike который доступен как служба AngularJS. Также стандартным типом контента размещенных данных является application / json. Поэтому нам нужно переопределить заголовки Content-type почтового запроса в application / x-www-form-urlencoded, чтобы получить доступ к опубликованным значениям через $ _POST.

Теперь в угловом режиме также предоставляется $httpParamSerializer но разница $httpParamSerializerJQLike – это что-то объект, также содержащий другой объект, поэтому, если используется прежний, тогда внутренний объект не будет сериализован, т. $httpParamSerializer Все вложенные объекты не будут сериализованы с помощью $httpParamSerializer но это это не относится к $httpParamSerializerJQLike .

Вы можете проверить разницу здесь: AngularJS $ httpParamSerializer service DOC

Теперь, вместо того, чтобы json кодировать и декодировать данные в php , мы можем сделать это в самой Angular JS, используя сервис $httpParamSerializerJQLike в угловом JS таким образом:

 $http({ url: myUrl, //post your url here method: 'POST', data: $httpParamSerializerJQLike({ 'user_id': '3'}), headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }); 

И в codeigniter вы можете получить эти опубликованные данные с помощью обычного синтаксиса, т.е. $this->input->post('user_id');

Для получения дополнительной информации … вы можете ссылаться на указанную выше ссылку …

Надеюсь, это может помочь вам ….