2016-01-07 7 views
0

Я новичок в AngularJs, мне нужно сделать запрос на сервер с формой перечисления. Я делаю это таким образом в JS:AngularJS - Request Body Request POST

function completeTaskAction2($scope, $http, Base64) { 
$http.defaults.headers.common['Authorization'] = 'Basic ' + Base64.encode('kermit' + ':' + 'kermit'); 
$http.get("http://localhost:8080/activiti-rest/service/runtime/tasks") 
    .then(function (response, data, status, headers, config) { 
     var ids = response.data.data[0].id; 

     $scope.formData2 = { 
      taskId: ids, 
      properties: [{ 
        id: 'requestApproval', 
        value: '' 
      } 
      ] 
     } 
    }); 
$scope.submitForm2 = function() { 

    $http({ 
     method: 'POST', 
     url: "http://localhost:8080/activiti-rest/service/form/form-data", 
     data: angular.toJson($scope.formData2), 
     headers: { 
      'Authorization': 'Basic ' + Base64.encode('kermit' + ':' + 'kermit'), 
      'Accept': 'application/json', 
      'Content-Type': 'application/json' 
     } 
    }).success(function (data) { 

     console.log("OK", data); 
    }).error(function (data) { 

     console.log("Error Posting data..."); 
     console.log(data); 
     console.log($scope.submitForm2); 
    }); 
}; 

};

и в HTML:

<div ng-controller="completeTaskAction2"> 
         <div ng-repeat="x in names"> 
          {{ x.name }}* 

          <form ng-submit="submitForm2()"> 
           <a ng-if="x.type=='enum'"> 
            <select ng-model="formData2.properties[0].value" ng-options="y.name for y in x.enumValues " placeholder="{{ x.name[0] }}"> {{ x.name }} </select> 
           </a> 
           <br> 

           <button type="submit" class="btn btn-success btn-lg btn-block"> 
            <span class="glyphicon glyphicon-flash"></span> Submit Enum! 
           </button> 
         </div> 


        </div> 
        </form> 

, но у меня есть эта ошибка:

Could not read JSON: Can not deserialize instance …

и тело ответа:

{"taskId":"67762","properties":[{"id":"requestApproval","value":{"id":"true","name":"Yes"}}]} 

Мне нужно только отправить это на сервер:

**{"taskId":"67762","properties":[{"id":"requestApproval","value":"true"}}]** 

Как я могу это сделать?

+0

Вы можете попробовать 'данные: $ scope.formData2' вместо' data: angular.toJson ($ scope.formData2) ' – Nora

+0

@Nora благодарим за ответ! но такая же ошибка и результат ... :( – Luke

ответ

1

Ваши нг-параметры должны быть такими:

ng-options="y.id as y.name for y in x.enumValues" 

это связать идентификатор y к модели значения вместо всего y объекта.

+0

Спасибо! Работал как шарм! Я, наконец, решил свою проблему! – Luke

1

Вместо этого:

<select ng-model="formData2.properties[0].value" ng-options="y.name for y in x.enumValues " placeholder="{{ x.name[0] }}"> {{ x.name }} </select> 

Вы должны использовать нг выбраны следующим образом:

<select ng-model="formData2.properties[0].value" ng-options="y.name for y in x.enumValues " ng-selected="x.name[0]"></select> 

Это должно решить вашу проблему, но я не могу проверить это прямо сейчас, к сожалению. Дайте мне знать, если это решит проблему :)

+0

, к сожалению, не получилось. Такая же ошибка и результат ... :(Спасибо в любом случае – Luke