Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.07.2016, 23:45
Интересующийся
Отправить личное сообщение для schel4ok Посмотреть профиль Найти все сообщения от schel4ok
 
Регистрация: 16.03.2016
Сообщений: 15

не получается отправить 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: []
}
Ответить с цитированием
  #2 (permalink)  
Старый 04.07.2016, 07:53
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

А ты уверен что $scope.name /email/message не пустые? Не вижу других причин.
Кроме того на бэкэнде могут быть проблемы с парсингом запроса, т.к. по дефолту бэк настроен на получение данных в формате querystring. Angular шлет в формате json
Ответить с цитированием
  #3 (permalink)  
Старый 05.07.2016, 22:17
Интересующийся
Отправить личное сообщение для schel4ok Посмотреть профиль Найти все сообщения от schel4ok
 
Регистрация: 16.03.2016
Сообщений: 15

не должны быть пустыми, хотя бы потому что они 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');
            }

        }


  });
Ответить с цитированием
  #4 (permalink)  
Старый 05.07.2016, 22:42
Интересующийся
Отправить личное сообщение для schel4ok Посмотреть профиль Найти все сообщения от schel4ok
 
Регистрация: 16.03.2016
Сообщений: 15

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

и всё равно получил такой же результат
Ответить с цитированием
  #5 (permalink)  
Старый 06.07.2016, 08:50
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Причин может быть много, и скорее всего все яйца выеденного не стоят - кэш браузера, тупо не передаются значения, $scope не доступен там откуда ты его пытаешься взять и пр.
Научись пользоваться отладчиком - f12, встань на то место где формируется запрос, проверь что все ок.
Ответить с цитированием
  #6 (permalink)  
Старый 06.07.2016, 20:05
Интересующийся
Отправить личное сообщение для schel4ok Посмотреть профиль Найти все сообщения от schel4ok
 
Регистрация: 16.03.2016
Сообщений: 15

вот я попробовал в консоли посмотреть содержимое 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--
Ответить с цитированием
  #7 (permalink)  
Старый 07.07.2016, 06:10
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Делай тестовый пример
Ответить с цитированием
  #8 (permalink)  
Старый 07.07.2016, 09:59
Интересующийся
Отправить личное сообщение для schel4ok Посмотреть профиль Найти все сообщения от schel4ok
 
Регистрация: 16.03.2016
Сообщений: 15

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

Последний раз редактировалось schel4ok, 07.07.2016 в 10:13.
Ответить с цитированием
  #9 (permalink)  
Старый 07.07.2016, 11:17
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Получится, просто запрос не уйдет. Но то что нам требуется покажет
Ответить с цитированием
  #10 (permalink)  
Старый 07.07.2016, 23:09
Интересующийся
Отправить личное сообщение для schel4ok Посмотреть профиль Найти все сообщения от schel4ok
 
Регистрация: 16.03.2016
Сообщений: 15

вот http://codepen.io/schel4ok/pen/jrrmre
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как собрать все данные из таблицы, и отправить массив на сервер optsar AJAX и COMET 14 11.12.2015 07:58
Получить данные JSON без jQUERY strongest Javascript под браузер 17 19.01.2014 20:07
Как разделить данные в JSON vyaceslav.kr jQuery 2 14.07.2012 18:34
Как отправить данные в .php файл на другой сервер ? lamer AJAX и COMET 2 04.04.2012 23:55
replace, отправить данные в функцию ВэйДлин Общие вопросы Javascript 2 21.07.2011 00:06