2014-10-28 1 views
0

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

// 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 

Является ли это проблемой, используя $ рамки?

UPDATE

Даже когда я жёстко исходящие ключи:

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 заполнены с некоторой dumby формы данных при входе в консоль и распечатаны на экран с помощью фильтра {formModel | } JSON выглядит следующим образом:

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

если вы 'console.debug ($ scope.formModel)' и 'console.debug (FormData) 'перед вызовом' $ http.post (...) ', что вы получаете в консоли? –

+0

два объекта со всеми их свойствами – mtpultz

ответ

0

Это может быть, что вы работаете в «URL-кодирование данных формы AngularJS не может это сообщения по умолчанию» по-ныне известная ловушке; если да, то вам необходимо сделать это, прежде чем попробовать и пост:

.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("&"); 
    }); 
}]); 

через How can I post data as form data instead of a request payload?

Смежные вопросы