私は角度のあるプロジェクトに取り組んでいます。私はいくつかのデータといくつかのアクションでグリッドを持っています。
onclick関数のアクションの1つをクリックすると、ajaxリクエストは、生涯のプロセスで一度であるサーバー側に移動しています。
しかし、最初の要求の応答が来る前にユーザーがアクションボタンを連続してクリックすると、同じ呼び出しがサーバーに2回以上送信され、エラーが発生します。
私は複数の要求からそれを防ぐことはできませんが、私はajax要求の前にアクションボタンを無効にしようとしました。 2番目のリクエストをブロックする方法はありますか?
私のコードは
$http({
method: 'POST',
url: urls.api_url_serv + 'notification/read?token=' + token,
transformRequest: transformRequestAsFormPost,
withCredentials: false,
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data: {
notification_id: notification_id
}
}).then(function(response) {
var data = response.data;
//Some actions
}).catch(function(response) {
var status = response.status;
// Some actions
});
<span ng-class="{'disabled': read_disable}">
<i class="fa fa-envelope" ng-click="MarkAsReadNotification(row.id)"></i>
</span>
リクエストが作成された後でブロックするのではなく、デバウンスを試みて1回の呼び出しだけがトリガーされましたか? – ssube
https://stackoverflow.com/questions/13320015/how-to-write-a-debounce-service-in-angularjs – mplungjan
@ssubeわかりません。ボタンを無効にすることを意味しますか?私はすでにonclick関数のボタンを無効にしています – Salini