Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Angularjs - simple form submit

I am going through learning curve with AngularJs and I am finding that there are virtually no examples that serve real world use.

I am trying to get a clear understanding of how to submit a form with the most standard components and pass it on to a PHP file..

My fiddle.

Does anyone have any good examples on submitting simple, un-polluted, forms that would help me and probably numerous other Angularjs beginners..

When I say a clean form I am referring to something like this..

<div ng-app="myApp">      <form name="saveTemplateData" action="#" ng-controller="FormCtrl" ng-submit="submitForm()">          First name:    <br/><input type="text" ng-model="form.firstname">    <br/><br/>         Email Address: <br/><input type="text" ng-model="form.emailaddress"> <br/><br/>          <textarea rows="3" cols="25" ng-model="form.textareacontent"></textarea>              <br/><br/>          <input type="radio" ng-model="form.gender" value="female" />Female ...         <input type="radio" ng-model="form.gender" value="male" />Male <br/>              <br/><br/>          <input type="checkbox" ng-model="form.member" value="5"/> Already a member              <br/><br/>          <input type="file" ng-model="form.file_profile" id="file_profile"><br/>         <input type="file" ng-model="form.file_avatar" id="file_avatar">              <br/><br/>          <!-- <button ng-click="save()" >Save</button> -->         <input type="submit" ngClick="Submit" >      </form>  </div> 

My ng-app code...

var app = angular.module('myApp', []); app.controller('FormCtrl', function ($scope, $http) {       var formData = {         firstname: "default",         emailaddress: "default",         textareacontent: "default",         gender: "default",         member: false,         file_profile: "default",         file_avatar: "default"     };      $scope.save = function() {         formData = $scope.form;     };      $scope.submitForm = function() {         console.log("posting data....");         formData = $scope.form;         console.log(formData);         //$http.post('form.php', JSON.stringify(data)).success(function(){/*success callback*/});     };   }); 

I guess three questions I have from here on are...

  1. How is my php file supposed to interact with this (how to I get the json string to an array in php file)?
  2. How would I submit value of a checkbox when the checkbox is true?
  3. I find a lot of information abotu using jQuery with Angular to submit images,, I see there is an image object in this submission already,, how do I retrieve that data? What are considerations to include with images?

I am willing to take any clear and concise information and assemble a good learning example for everyone...

My fiddle

like image 230
GRowing Avatar asked Nov 14 '13 18:11

GRowing


People also ask

What is Ng submit in AngularJS?

AngularJS ng-submit Directive The ng-submit directive specifies a function to run when the form is submitted. If the form does not have an action ng-submit will prevent the form from being submitted.

How do you submit a form in angular?

Create the checkout formlink html , add an HTML <form> element and a Purchase button. Use a formGroup property binding to bind checkoutForm to the HTML <form> . On the form tag, use an ngSubmit event binding to listen for the form submission and call the onSubmit() method with the checkoutForm value.

What is the difference between ngSubmit and click?

The difference is that (ngSubmit) listens to the ngSubmit event of the NgForm directive and click to the click event of the <button> element. The button in the 2nd example will cause the submit event which also causes the ngSubmit event, but because it is not listened to, it will have no effect.

What is $dirty in AngularJS?

$dirty means the user has changed the input value, $invalid means the address itself is invalid. Therefore the error is only shown if the user has actively changed the input value to either an empty or invalid value.


2 Answers

WARNING This is for Angular 1.x

If you are looking for Angular (v2+, currently version 8), try this answer or the official guide.


ORIGINAL ANSWER

I have rewritten your JS fiddle here: http://jsfiddle.net/YGQT9/

<div ng-app="myApp">      <form name="saveTemplateData" action="#" ng-controller="FormCtrl" ng-submit="submitForm()">          First name:    <br/><input type="text" name="form.firstname">             <br/><br/>          Email Address: <br/><input type="text" ng-model="form.emailaddress">          <br/><br/>          <textarea rows="3" cols="25">           Describe your reason for submitting this form ...          </textarea>          <br/>          <input type="radio" ng-model="form.gender" value="female" />Female         <input type="radio" ng-model="form.gender" value="male" />Male          <br/><br/>          <input type="checkbox" ng-model="form.member" value="true"/> Already a member         <input type="checkbox" ng-model="form.member" value="false"/> Not a member         <br/>          <input type="file" ng-model="form.file_profile" id="file_profile">         <br/>          <input type="file" ng-model="form.file_avatar" id="file_avatar">         <br/><br/>          <input type="submit">     </form> </div> 

Here I'm using lots of angular directives(ng-controller, ng-model, ng-submit) where you were using basic html form submission. Normally all alternatives to "The angular way" work, but form submission is intercepted and cancelled by Angular to allow you to manipulate the data before submission

BUT the JSFiddle won't work properly as it doesn't allow any type of ajax/http post/get so you will have to run it locally.

For general advice on angular form submission see the cookbook examples

UPDATE The cookbook is gone. Instead have a look at the 1.x guide for for form submission

The cookbook for angular has lots of sample code which will help as the docs aren't very user friendly.

Angularjs changes your entire web development process, don't try doing things the way you are used to with JQuery or regular html/js, but for everything you do take a look around for some sample code, as there is almost always an angular alternative.

like image 120
caffeinated.tech Avatar answered Oct 18 '22 19:10

caffeinated.tech


Sending data to some service page.

<form class="form-horizontal" role="form" ng-submit="submit_form()">     <input type="text" name="user_id" ng-model = "formAdata.user_id">     <input type="text" id="name" name="name" ng-model = "formAdata.name"> </form>  $scope.submit_form = function()             {                 $http({                         url: "http://localhost/services/test.php",                         method: "POST",                         headers: {'Content-Type': 'application/x-www-form-urlencoded'},                         data: $.param($scope.formAdata)                     }).success(function(data, status, headers, config) {                         $scope.status = status;                     }).error(function(data, status, headers, config) {                         $scope.status = status;                     });             } 
like image 43
Akhilesh Kumar Avatar answered Oct 18 '22 18:10

Akhilesh Kumar