如何在Angularjs中模拟HTML表单请求
How to mimic a HTML Form request in Angularjs?
我使用Laravel制作了一个应用程序,所以大多数页面都使用简单的HTML表单来发送HTTP请求。
我最近决定使用Angular Material来编写我的前端代码,但由于所有的输入组件都强制使用ng模型,我想使用Angular控制器来模仿简单的HTML表单提交的行为。
例如:我想要这个
index.html
<form action="/confirm" method="POST">
<input type="text" name="name">
<input type="submit" value="Submit">
</form>
使用此
index.html
<input type="text" name="name" ng-model="name">
<form action="/confirm" method="POST" ng-submit="submit($event)">
<input type="submit" value="Submit">
</form>
app.js
var app = angular.module('MyApp', []);
app.controller('AppController', ['$scope', function($scope){
$scope.submit = function(e){
e.preventDefault();
var url = e.currentTarget.getAttribute('action');
var data = {
name : this.name
};
// Some code here that I can't figure out
// Which will mimic the simple HTML Form Submission
};
}]);
一个解决方案是为表单外的每个输入在表单内附加一个隐藏的输入。我不想这样做,这将非常有效。
还有别的办法吗?非常感谢。
如果有人知道如何处理文件输入,那就太好了。
Javascript:
app.controller("MainCtrl", ["$scope", "$http", function($scope, $http) {
$scope.name = null;
$scope.submitForm = function(name) {
//submitting form items depend on what your /confirm endpoint is expecting
//is it expecting JSON, form data in the body, etc?
//JSON
var payload = {
name: name
};
//submitting via FormData
//var payload = new FormData();
//payload.append("name", name);
//use $http to post to server
$http.post('/confirm/', payload).then(function(response) {
//success
}, function() {
//an error has occurred
});
}
}]);
HTML:
<form id="myForm" name="myForm" ng-submit="submitForm(name)">
<!-- bind model to input using ng-model -->
<input required type="text" ng-model="name" />
<button ng-disabled="myForm.$invalid" type="submit" ng-click="submitForm(name)">Submit</button>
</form>
您可以使用$http服务进行http调用,您的代码应该看起来像这个
var url = e.currentTarget.getAttribute('action');
var data = {
name : this.name
};
$http({
method: url,
url: '/confirm',
data:data
}).then(function successCallback(response) {
// this callback will be called asynchronously
// when the response is available
}, function errorCallback(response) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- HTML表单提交时未执行外部函数
- 如何将输入(type=text)从html表单传递到javascript函数
- 多级HTML表单
- 使用html表单中的参数调用JavaScript函数
- javascript弹出窗口没有正确加载html表单
- Javascript/RegEx未验证HTML表单
- JavaScript”;复制“;HTML表单
- 使用Web Html表单创建Javascript数组
- 用PHP发送html表单和文件附件
- 单击鼠标,用MySQL数据填充html表单输入字段
- 从HTML表单发布blob的表单输入类型是什么
- 我的html表单无法验证.请参阅代码片段中的html代码和java脚本
- JavaScript-HTML表单到JSON(空值)和格式
- HTML表单将数据POST到MySQL
- 获取html表单信息并使用ajax将其推送到PHP
- 使用PHP通过HTML表单选项选择器过滤MYSQL结果
- javascript,HTML表单:单击按钮插入NULL
- 如何在HTML表单中提交我的下拉选择
- 将HTML表单发布到iframe会导致浏览器历史记录出现问题