AngularJS - 如何将表单提交到服务器上的控制器

AngularJS - How do I submit a form to a controller on the server?

本文关键字:服务器 控制器 表单提交 AngularJS      更新时间:2023-09-26

AngularJS站点上的说明书表单示例仅保存客户端上的状态。如何提交到服务器?

或者,如何在ng:click="save()"函数中的表单上使用jQuery的form.submit()

编辑 - 找到了 2 种方法(我还删除了之前粘贴的 HTML 标记 - 只需参考源的高级表单食谱示例)

  1. http://webpac2.rot13.org:3000/conference/Work(Dobrica Pavlinusic)采用AngularJS方式,使用资源将数据以JSON格式发送到服务器。我在服务器端遇到了问题 - AngularJS 发送它很好,但圣杯正在破坏它(根据 firebug 和请求内容长度)。我需要对此进行更多研究。如何更改像 $save() 这样的资源方法的角度中的内容类型?

  2. 放入表单并使用提交按钮。由于我不是在做单页 Web 应用程序,所以我使用了这种方法。大多数验证都在客户端上进行,还有一些在服务器上进行,这对我来说已经足够了。

只是把它放在这里,以便其他人可以用它来获得可能的解决方案和最佳方法。

请注意,视图(您的 html 模板)和逻辑(您的 JS 代码)有严格的分离 - 主要是因为可测试性。

正确的方法是使用$resource(用于 REST)或低级$http将模型发送到服务器。而不是在模板中执行工作。

简单示例 - HTML 模板

First: <input type="text" ng-model="person.first" />
Last: <input type="text" ng-model="person.last" />
<button ng:click="save()">Save</button>

JavaScript - 控制器

function FormCntl($scope, $http) {
  $scope.save = function() {
    $http.put('/save.py', $scope.person);
  };
}

据我所知,实际上没有一种好方法来修改角度发送到服务器期望编辑角度源的标头。这是计划的增强功能,但仍未完成。

我认为角度谷歌小组可能是提出此类具体问题的更好地方,因为开发人员非常友好且知识渊博。