javascript - angularjs http post 与 Angular 和 GAE

标签 javascript python angularjs

我需要一个小修复。我只需要使用 angularjs 将我的数据(评论)发布到数据存储(GAE),但它还没有发生。以下 angularjs“post”或 html 有什么问题?

Angular :

$scope.addComment = function() {

        var form_comment = $scope.formFields.comment

        var payload = {
            comment: form_comment
        }

        $http({
            method: 'POST',
            url: '/exp'
        }).then(function successCallback(response) {

            $scope.comments.push(payload);


        }, function errorCallback(response) {

        });

    };

HTML:

{% extends "home.html"%}
{% block content %}


<div ng-controller="commentController" class="formcontent">
    <div class ="container">

            <form ng-submit="addComment()" method="post" id="frmComment">

                <textarea ng-model="formFields.comment" id="comment" name="commento" class="form-control status-box sameline" rows="2" placeholder="Recommend Colin"></textarea>
            </form>
            <div class="button-group pull-right sameline">
                    <p class="counter">140</p>
                    <button form ="frmComment"class="btn btn-primary" type="submit">Post</button>
            </div>
    </div>

    <div>
        <ul class="posts">
            <li ng-repeat = "c in comments">
                    {< c.comment >}
            </li>
        </ul>
    </div>

</div>
{% endblock %}

Python:

class expHandler(webapp2.RequestHandler):
    def get(self):
        title="Colin_MK: Experience"
        recommendations = Recommendation.query()
        self.response.out.write(json.dumps([rec.to_dict() for rec in recommendations]))
        template_vars = {'title': title, 'recommendations': recommendations}
        template = JINJA_ENVIRONMENT.get_template('/exp.html')
        self.response.out.write(template.render(template_vars))

    def post(self):
        r = json.loads(self.request.body)

        new_comment = Recommendation(comment=r['comment'])
        new_comment.put()

app = webapp2.WSGIApplication([
    ('/', MainHandler),
    ('/bio', bioHandler),
    ('/exp', expHandler)
], debug=True)

最佳答案

post 方法的签名如下:

post(url, data, [config]); 

所以你还应该包括有效负载。尝试这样的事情:

$http.post('/exp', payload).then(...)

此外,在 Promise 的 then() 方法上,您应该发送对该方法的引用:

      .then(function(response) {
          $scope.comments.push(payload);
      }, function(response) {

      });

关于javascript - angularjs http post 与 Angular 和 GAE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33409142/

相关文章:

javascript - 将对象推送到在 Angular js中不起作用的数组

javascript - 将文件名从 .js 更改为 .jsx 后,React 项目无法编译

python - Sklearn 自定义转换器 : difference between using FunctionTransformer and subclassing TransformerMixin

python - 从 Splash 请求中读取 cookie

python - 在 SymPy 中一次求解非线性方程组和不等式

c# - 使用 C# AutoMapper 将 DateTime UTC 转换为本地

javascript - 是否可以在 gulpfile 中添加 if 语句来根据文件大小运行任务?

javascript - 如何在 keydown 上启动计时器并在 keyup 上停止?

javascript - 为什么浏览器不在通过 fetch API 检索的 HTML 片段中运行 &lt;script&gt;?

javascript - 使用 Protractor 在非 AngularJS 页面上测试登录