AngularJS Не може да предаде данни за модел към сървър модел се появява като празен низ

Опитвам се да изпратя прости данни към сървъра. Вземам първоначално получените сървърни данни, използвани за създаване на динамични формуляри, бързо почистване на ненужни ключове с помощта на delete formData['not_needed'] и след това исках да добавя модела, който е създаден преди публикуване на сървъра, но когато проверя ключът на модела на обекти от данни, който се опитвам да добавя, винаги е празен низ. Мога да изпратя едното или другото, но изглежда не мога да добавя един обект към друг като двойка ключ-стойност.

// Abridged version
var formData = $scope.responseData; // original server data to build forms
delete formData['config_data']; // remove unnecessary keys

formData.model = $scope.formModel; // add model key

$http.post('/restful/api', formData).then(function(success) {...}, function(error) {...});

Изходът на предадените данни от сървъра изглежда така:

{ id: "1", type: "type_of_form", name: "name_of_package", model: "" } // model always empty

Това проблем ли е при използване на $scope?

АКТУАЛИЗАЦИЯ

Дори когато твърдо кодирам изходящите ключове:

var packageData = {
    "packageid": $scope.formData.id, // makes it to server
    "desc": $scope.formData.desc, // also makes it to server
    "data": $scope.formModel // is just an empty string
}

Но formModel се попълва от някои тъпи данни от формуляр, когато се регистрира в конзолата и се отпечатва на екрана с помощта на филтър { formModel | json} изглежда така:

formModel = {
  "document_date": "1234",
  "first_name0": "1",
  "first_name1": "2",
  "first_name2": "3",
  "first_name3": "4"
}

person mtpultz    schedule 28.10.2014    source източник
comment
ако направите console.debug($scope.formModel) и console.debug(formData) точно преди да извикате $http.post(...) какво получавате в конзолата?   -  person Sebastian Piu    schedule 28.10.2014
comment
два обекта с всичките им свойства   -  person mtpultz    schedule 28.10.2014


Отговори (1)


Възможно е да се сблъскате с известния вече "AngularJS не може да формира-URL-кодира данни, които ПУБЛИКУВА по подразбиране" капан; ако е така, ще трябва да направите това, преди да опитате и да публикувате:

.config(['$httpProvider', function ($httpProvider) {
  // Intercept POST requests, convert to standard form encoding
  $httpProvider.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded";
  $httpProvider.defaults.transformRequest.unshift(function (data, headersGetter) {
    var key, result = [];
    for (key in data) {
      if (data.hasOwnProperty(key)) {
        result.push(encodeURIComponent(key) + "=" + encodeURIComponent(data[key]));
      }
    }
    return result.join("&");
  });
}]);

чрез Как мога да публикувам данни като данни за формуляр вместо полезен товар на заявка?

person T.W.R. Cole    schedule 28.10.2014