Имам проблем с параметрите на $https.post на AngularJS. Четох, че AngularJS създава JSON за параметрите. Така че приложих решението, намерено тук:
http://victorblog.com/2012/12/20/make-angularjs-http-service-behave-like-jquery-ajax/
Но все още имам проблем с Python CGI.
[Редактиране]
Изход от console.log за objData:
Object {hostname: "test", id_venue: 20}
проверка на заявката за полезен товар:
action: "insert",
objData: { first: "test", second:"test2" }
[/Редактиране]
Обаждане от уебсайт
angular.module('myApp.services', [])
.service('MyService', ['$http', '$q', function ($http, $q) {
this.insert = function (objData){
console.log(objData);
var deferred = $q.defer();
$http.post('api/api.py', { action: 'insert', objData: objData }).success(function (data, status, headers, config) {
deferred.resolve(data);
}).error(function (response) {
deferred.reject("error");
});
return deferred.promise;
};
}])
Кодът от страна на сървъра е направен с Python и CGI. За съжаление не мога да използвам уеб рамки е ограничение.
api/api.py
import cgi
params = cgi.FieldStorage()
print 'Content-type: application/json'
print
print params
print params['objData'].value
Проверете заглавките на заявката и отговора и очевидно имам KeyError:
FieldStorage(None, None, [MiniFieldStorage('action', 'insert'), MiniFieldStorage('objData[first]', 'test'), MiniFieldStorage('objData[second]', 'test2')])
KeyError: 'objData'
Всяко решение за това как правилно да се четат параметри на Python CGI FieldStorage. Или някакъв начин да ги изпратите правилно с AngularJS? С $http.get нямам никакъв проблем.
Може би едно решение може да бъде да се обработва POST заявка директно в Python, без да се използва cgi.FieldStorage.