我需要從我的HTML頁面做了以下活動:AngularJS使用Ajax表單提交需要點擊兩次
- 用戶輸入電子郵件地址和密碼來註冊
- 形式發送到控制器的時候,用戶點擊
Submit
- 控件使用AJAX爲RESTful Server創建JSON請求,並且 服務器做出相應響應。
- 根據服務器的迴應,用戶應該在「提交」下面的當前頁面(
register.html
)上得到警報窗口和一條 消息。 如果它是「成功 - 註冊」或「失敗 - 不能 註冊」。
但是,目前它正在像這樣工作:1),2),3)按預期工作。
用戶首先用適當的消息點擊
Submit
獲取警報窗口。用戶只能點擊打印的郵件
Submit
AGAIN,但再次顯示警報窗口。
如果我從JS刪除alert('Something')
,我要爲消息中單擊兩次打印在register.html
另外,我想將它帶到你的注意,點擊兩次也正在調用服務器的兩倍。它的行爲就好像它在服務器調用後暫停,然後打印我應該點擊提交的消息。
register.html
<div class='container'>
<div class='col-md-12'>
<div class='fill' ng-controller="registerController">
<form name="userForm" ng-submit="submitForm(userForm.$valid,user)" novalidate>
<!-- ALL FORM ELEMENTS HERE -->
<button type="submit" class="btn btn-primary" ng-disabled="userForm.$invalid" ng-click="showme=true">
Submit
</button>
<div class="wrapper">
<h3 ng-show="showme"><em>{{msgalert}}</em></h3>
</div>
</form>
</div>
</div>
</div>
我的JS控制器看起來像這樣stackoverflow_q3.js
// create angular controller
var register = angular.module('Main-app');
register.controller('registerController', function ($scope, $http, $location) {
// function to submit the form after all validation has occurred
$scope.submitForm = function (isValid, user) {
console.log('Stackoverflow JS func caled');
var regData = {
"email": user.email,
"password": user.password1
};
var jsonData = JSON.stringify(regData);
var request = $.ajax({
url: 'myurl',
type: 'POST',
data: jsonData,
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
dataType: 'json',
complete: function (response) {
console.log(response.responseText);
if (response.responseText == 'success') {
console.log('Registration Success');
alert('Success');
$scope.msgalert = 'Registration Success, Proceed to Login and Continue';
} else if (response.responseText == 'fail') {
alert('registration failed');
$scope.msgalert = 'Registration Failed, Please try again';
}
}
});
};
});
另外在index.html
我所提到的控制器:
<!-- HTML -->
<!DOCTYPE html>
<html ng-app="Main-app">
<!-- Controllers -->
<script src="js/controllers/stackoverflow_q3.js" type="text/javascript"></script>
<!-- Other elements -->
</html>
任何想法,我該怎麼辦所有這些活動在一個「提交」點擊?
而不是'ng-show = showme',試試'ng-show = msgalert'。 – jperezov
另外,你爲什麼要調用angular的'$ http'函數,但使用jQuery的'ajax'函數?一般來說,你需要在角度上創建一個服務(https://docs.angularjs.org/guide/services),並在你的控制器中調用_that_。 – jperezov
是的,喬納森,你是對的,我同意這一點。我的錯。 – AdityaHandadi