Hi Geeks,
When I was working with angular form posts then I was tried radio and checkboxes as normal inputs in angular js form post then it is sending [Object Object] to the webservices and that object couldn’t be parsed by the server-end , and also inserted [Object Object] text into the database also.
But I need to send the controls in key val pair So I Write following code written to sent it, These are the steps which I follow to achieve it.
First I created the Html controls like this :
<!— html radio box for item condition —> <div class="form-group"> <label class="checkbox-inline"> <input name="condition1" type="radio" value="Bad" ng-model="postAdd.condition1">Bad</label> <label class="checkbox-inline"> <input name="condition1" type="radio" ng-checked="true" value="Good" ng-model="postAdd.condition1">Good</label> <label class="checkbox-inline"><input name="condition1" type="radio" value="Better" ng-model="postAdd.condition1">Better </label> </div> <!— html radio box for item condition —> <!—html checkbox for item type ---> <div class="form-group"> <label class="checkbox-inline"> <input name="prd_type" type="checkbox" ng-model=" postAdd .prd_type.Car">Car</label> <label class="checkbox-inline"><input name="prd_type" type="checkbox" ng-model=" postAdd .prd_type.Byke">Byke</label> <label class="checkbox-inline"> <input name="prd_type" type="checkbox" ng-model="prd_type.Tv">TV</label> </div> <!—html checkbox for item type --->
Now in your Controller ‘s submit function ( I am assuming that you have already go through my previous article for form process in angular js or you already aware with form processing in angular js ) as following:
//collect the radio opted value data in a var var single_option= $scope. postAdd.condition1;//it will come directly because same group for radio will get only the selected value //collect the checkboxes data in a var with comma seperated var checked_items=””; angular.forEach($scope. postAdd .prd_type, function(val,key) { checked_items+=","+key; });
Now complete post action inside the respective controller will look like this
$scope.submit_form = function() { $http({ url: base_url+"services.do/add_business",//or your service url method: "POST", processData: false, headers: { 'Content-Type': undefined }, data : $scope. postAdd,//it will get all other normal text or select inputs in the form form using common modal >> postAdd transformRequest: function (data) { var formData = new FormData(); //collect the radio opted value data in a var var single_option= $scope. postAdd.condition1;//it will come directly because same group for radio will get only the selected value formData.append(“item_condition”, single_option); //collect the checkboxes data in a var with comma seperated var checked_items=””; angular.forEach($scope. postAdd .prd_type, function(val,key) { checked_items+=","+key; }); formData.append(“item_types”, checked_items); return formData; }, }).success(function(data, status, headers, config) { //success callback, show success or alert depends on return data in first callback response named > data console.log("form submitted successfully"); }).error(function(data, status, headers, config) { //error callback here console.log("Error in form process"); }); }
you can ask any confusion and if something not clear then put your query in comments , i will type to reply on same and try to resolve your problem where you stucked