JSFiddle - React, Tailwind, and code Playground
HTML
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.2/css/bootstrap.min.css">
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<div class="container" >
<div class="col-sm-6 col-sm-offset-3" >
<!-- PAGE TITLE -->
<div class="page-header" >
<h1><span class="glyphicon glyphicon-tower" ></span> Submitting Forms with Angular</h1>
</div>
<!-- SHOW ERROR/SUCCESS MESSAGES -->
<div id="messages" ng-show="message" >{{ message }}</div>
<!-- FORM -->
<form ng-submit="processForm()" >
<!-- NAME -->
<div id="name-group" class="form-group" ng-class="{ 'has-error' : errorName }" >
<label>Name</label>
<input type="text" name="name" class="form-control" placeholder="Bruce Wayne" ng-model="formData.name" >
<span class="help-block" ng-show="errorName" >{{ errorName }}</span>
</div>
<!-- SUPERHERO NAME -->
<div id="superhero-group" class="form-group" ng-class="{ 'has-error' : errorSuperhero }" >
<label>Superhero Alias</label>
<input type="text" name="superheroAlias" class="form-control" placeholder="Caped Crusader" ng-model="formData.superheroAlias" >
<span class="help-block" ng-show="errorSuperhero" >{{ errorSuperhero }}</span>
</div>
<!-- SUBMIT BUTTON -->
<button type="submit" class="btn btn-success btn-lg btn-block" >
<span class="glyphicon glyphicon-flash" ></span> Submit!
</button>
</form>
</div>
</div>
JavaScript
// define angular module/app
var formApp = angular.module( 'formApp', [] );
// create angular controller and pass in $scope and $http
function formController( $scope, $http ) {
// create a blank object to hold our form information
// $scope will allow this to pass between controller and view
$scope.formData = {};
// process the form
$scope.processForm = function() {
$http({
method : 'POST',
url : 'process.php',
data : $.param($scope.formData), // pass in data as strings
headers : { 'Content-Type': 'application/x-www-form-urlencoded' }
})
.success(function(data) {
console.log(data);
if (!data.success) {
// if not successful, bind errors to error variables
$scope.errorName = data.errors.name;
$scope.errorSuperhero = data.errors.superheroAlias;
} else {
// if successful, bind success message to message
$scope.message = data.message;
}
});
};
}