<div dir="ltr">Hi Adil:<div><br></div><div>I did try adding <font face="monospace, monospace">JSON.stringify() </font>as you suggested, but this didn't seem to have an effect on the behavior of the post contents.</div><div><br></div><div>Thanks,</div><div><br></div><div>-Clint</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jan 31, 2018 at 3:11 PM, Adil Hasan <span dir="ltr"><<a href="mailto:paradox2005@gmail.com" target="_blank">paradox2005@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello Clint,<br>
I wasn't using Flask one one of my backends (just plain cgi python), but I<br>
had to pass the JSON object as a string. Could you try out<br>
<br>
         $http.post('/', JSON.stringify(data), config)<br>
<br>
and see if that gives you what you want?<br>
<br>
hth<br>
adil<br>
<span class=""><br>
On Mon, Jan 29, 2018 at 04:52:08PM -0800, Clint Olsen wrote:<br>
</span><span class="">> Hi:<br>
><br>
> I'm new to Flask and Angular and only done a little web-based programming,<br>
> so please forgive my lack of understanding. I've just cobbled together<br>
> examples from Flask as well as some examples online to come up with the<br>
> following.<br>
><br>
> I am interested in the most basic functionality of modifying a web form and<br>
> capturing that in the back-end to prove I can get data at least in one<br>
> direction:<br>
><br>
</span>> *static/app.js*:<br>
<span class="">><br>
> var app = angular.module('myApp', []);<br>
><br>
> app.controller('formCtrl', function($scope, $log, $http) {<br>
>     $scope.firstName = "John";<br>
><br>
>     $scope.SendData = function () {<br>
>         var data = { 'foo': $scope.firstName };<br>
><br>
>         var config = {<br>
>             headers : {<br>
>                 'Content-Type':<br>
> 'application/x-www-form-<wbr>urlencoded;charset=utf-8;'<br>
>             }<br>
>         }<br>
><br>
>         $http.post('/', data, config)<br>
>             .success(function(results) {<br>
>             $log.log(results);<br>
>         })<br>
>         .error(function(error) {<br>
>             $log.log(error);<br>
>         });<br>
>     };<br>
> });<br>
><br>
</span>> *static/index.html*:<br>
<span class="">><br>
> <!doctype html><br>
> <html><br>
>     <head><br>
>         <script src="<br>
> <a href="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.3/angular.min.js" rel="noreferrer" target="_blank">https://ajax.googleapis.com/<wbr>ajax/libs/angularjs/1.5.3/<wbr>angular.min.js</a><br>
> "></script><br>
>                 <script src="<br>
> <a href="http://code.angularjs.org/1.5.3/angular-route.min.js" rel="noreferrer" target="_blank">http://code.angularjs.org/1.5.<wbr>3/angular-route.min.js</a>"></<wbr>script><br>
>                 <script src="/static/app.js"></script><br>
>                 <link rel="stylesheet" href="/static/style.css" /><br>
>     </head><br>
>     <body><br>
>         <div ng-app="myApp" ng-controller="formCtrl"><br>
>         <form><br>
>             First Name: <input type="text" ng-model="firstName"><br>
><br>
>             <button data-ng-click="SendData()"><br>
>                 Send<br>
>             </button><br>
>         </form><br>
><br>
>         <h1>You entered: {{firstName}}</h1><br>
><br>
>         <div><br>
>     </body><br>
> </html><br>
><br>
</span>> *app.py*:<br>
<div class="HOEnZb"><div class="h5">><br>
> from flask import Flask, request, send_file<br>
><br>
> app = Flask(__name__)<br>
><br>
> @app.route('/', methods=['GET', 'POST'])<br>
> def index():<br>
>     print('Request: %s' % request.method)<br>
>     if request.method == 'POST':<br>
>         data = request.form.to_dict()<br>
>         print('First name from form is %s' % data)<br>
>         return 'OK'<br>
>     else:<br>
>         return send_file("static/index.html")<br>
><br>
> if __name__ == "__main__":<br>
>     app.run(host='0.0.0.0', debug=True)<br>
><br>
> This code (sort of) works, but the message I get from index() is kind of<br>
> weird, so maybe I'm not packaging the data payload correctly? In this<br>
> example I just populate the form with a "C":<br>
><br>
> Flask log:<br>
><br>
> Request: GET<br>
> 127.0.0.1 - - [29/Jan/2018 16:40:11] "GET /? HTTP/1.1" 200 -<br>
> 127.0.0.1 - - [29/Jan/2018 16:40:11] "GET /static/app.js HTTP/1.1" 200 -<br>
> 127.0.0.1 - - [29/Jan/2018 16:40:11] "GET /static/style.css HTTP/1.1" 200 -<br>
> Request: POST<br>
> First name from form is {'{"foo":"C"}': ''}<br>
> 127.0.0.1 - - [29/Jan/2018 16:40:16] "POST / HTTP/1.1" 200 -<br>
><br>
> I'm not not quite sure why the key/value pair is embedded in a dictionary<br>
> as the key with an empty value.<br>
><br>
> Any pointers would be much appreciated!<br>
><br>
> Thanks,<br>
><br>
> -Clint<br>
<br>
</div></div><div class="HOEnZb"><div class="h5">> ______________________________<wbr>_________________<br>
> Flask mailing list<br>
> <a href="mailto:Flask@python.org">Flask@python.org</a><br>
> <a href="https://mail.python.org/mailman/listinfo/flask" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/flask</a><br>
<br>
</div></div></blockquote></div><br></div>