Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   не получается отправить JSON данные (https://javascript.ru/forum/angular/63843-ne-poluchaetsya-otpravit-json-dannye.html)

schel4ok 03.07.2016 23:45

не получается отправить JSON данные
 
доделал скрипт калькулятора и теперь не могу отправить данные из него рнр скрипту

$scope.submit = function(isValid) {
      if (isValid) {
          $http.post($scope.url, {"name": $scope.name, "email": $scope.email, "message": $scope.message }).
                        success(function(data, status) {
                            console.log(data);
                            $scope.status = status;
                            $scope.data = data;
                            $scope.result = data; 
                        })
            }else{
                
                  alert('Form is not valid');
            }

        }



при нажатии на кнопку submit браузер отображает вот это - как будто я посылаю пустую посылку

Код:

ParameterBag {#211 ▼
  #parameters: []
}


krasovsky 04.07.2016 07:53

А ты уверен что $scope.name /email/message не пустые? Не вижу других причин.
Кроме того на бэкэнде могут быть проблемы с парсингом запроса, т.к. по дефолту бэк настроен на получение данных в формате querystring. Angular шлет в формате json

schel4ok 05.07.2016 22:17

не должны быть пустыми, хотя бы потому что они required и без них форма не отправляется

вот еще выдержки из кода
<form method="POST" action="page.html" class="calc" name="calculator" ng-app="Calc" ng-controller="CalcController">

		<input id="name" name="name" ng-model="name" type="text" required>
		<label for="name">Ваше имя *</label>

		<input id="phone" name="tel" ng-model="tel" type="text"  required>
		<label for="phone">Номер телефона *</label>

		<input id="email" name="email" ng-model="email" type="email"  required>
		<label for="email">Адрес электронной почты *</label>

		<textarea id="message" name="message" ng-model="message"></textarea>
		<label for="message">Комментарии</label>
</form>


angular
  .module('Calc',[])
  .controller('CalcController', function($scope, $http) {

    $scope.outerScope = {};
    $scope.data = {};

    $scope.url = 'page.html';

    $scope.submit = function(isValid) {
      if (isValid) {
          $http.post($scope.url, {"name": $scope.name, "email": $scope.email, "message": $scope.message }).
                        success(function(data, status) {
                            console.log(data);
                            $scope.status = status;
                            $scope.data = data;
                            $scope.result = data; 
                        })
            }else{
                
                  alert('Form is not valid');
            }

        }


  });

schel4ok 05.07.2016 22:42

только что попробовал проверить вот так
$http.post($scope.url, {"name": "$scope.name", "email": "$scope.email", "message": "$scope.message" })

и всё равно получил такой же результат

krasovsky 06.07.2016 08:50

Причин может быть много, и скорее всего все яйца выеденного не стоят - кэш браузера, тупо не передаются значения, $scope не доступен там откуда ты его пытаешься взять и пр.
Научись пользоваться отладчиком - f12, встань на то место где формируется запрос, проверь что все ок.

schel4ok 06.07.2016 20:05

вот я попробовал в консоли посмотреть содержимое POST запроса

Странным показалось то, что в скрипте я пытаюсь передать вот эти вещи $scope.name, $scope.email, $scope.message.
А на сервер вместо них отправляются значения всех полей, которые имеют тег name.
Но мыслей по решению проблемы это мне никаких не прибавило.


Content-Type: multipart/form-data; boundary=---------------------------11951679631998
Content-Length: 1023

-----------------------------11951679631998
Content-Disposition: form-data; name="_token"

e5BHE37nNgme9AXpdpt1o61AgIElB5liPipWqYlL
-----------------------------11951679631998
Content-Disposition: form-data; name="calc"

saunadoor
-----------------------------11951679631998
Content-Disposition: form-data; name="radio"

Стандартный
-----------------------------11951679631998
Content-Disposition: form-data; name="glass"

object:3
-----------------------------11951679631998
Content-Disposition: form-data; name="korobka"

object:8
-----------------------------11951679631998
Content-Disposition: form-data; name="name"

Илья
-----------------------------11951679631998
Content-Disposition: form-data; name="tel"

1234567
-----------------------------11951679631998
Content-Disposition: form-data; name="email"

123@mail.ru
-----------------------------11951679631998
Content-Disposition: form-data; name="message"


-----------------------------11951679631998--

krasovsky 07.07.2016 06:10

Делай тестовый пример

schel4ok 07.07.2016 09:59

это как?
насколько я понимаю в онлайн сервисах типа jsfiddle воспроизвести отправку данных на сервер не получится

krasovsky 07.07.2016 11:17

Получится, просто запрос не уйдет. Но то что нам требуется покажет

schel4ok 07.07.2016 23:09

вот http://codepen.io/schel4ok/pen/jrrmre


Часовой пояс GMT +3, время: 06:31.