버튼을 사용하여 Ajax를 통해 데이터를 제출하고 있습니다. jQuery를 사용하여 버튼을 비활성화하고 활성화합니다. 이는 사용자가 악의적으로 또는 무의식적으로 여러 요청을 실행할 수있는 "단추 매싱"을 방지하기위한 것입니다.버튼 대신 앵커를 사용할 때 버튼 매싱을 방지하려면 어떻게해야합니까?
"요소에 영향을받지 않는"방법으로 jQuery에서이 동작을 방지 할 수 있습니까? 예를 들어 버튼 대신 앵커를 사용하여 데이터를 제출하려고한다고 가정 해 보겠습니다. 비활성화 할 수있는 버튼. 하지만 내가 아는 한 당신은 닻을 무력화시킬 수 없습니다. 여기
내가 지금하고 있어요 방법 : (나는 그것을 짧게 만들기 위해 불필요한 코드의 일부를 제거했습니다 참고)$('.fav .button').click(function() {
$.ajax({
context: this,
dataType: 'json',
beforeSend: function() {
// Toggle state; disable button to prevent button mashing
$(".fav").toggleClass("fav-state-1");
$(".fav .button").attr("disabled", true);
},
error: function() {
// Rollback state and re-enable button on error
$(".fav").toggleClass("fav-state-1");
$(".fav .button").attr("disabled", false);
},
success: function(response) {
if (response.result == "success") {
$(".fav .button").attr("disabled", false);
}
else {
// Rollback state; re-enable button
$(".fav").toggleClass("fav-state-1");
$(".fav .button").attr("disabled", false);
}
}
});
return false;
});
는 HTML :
<input class="button" type="button" value="">
클라이언트 측 대신 서버 측 제출을 여러 개 포착하는 것을 고려해야합니다. 더 안정적입니다. – RoToRa
* "이것은 사용자가 악의적으로 또는 무의식적으로 여러 요청을 실행할 수있는"단추 매싱 "을 방지하기위한 것입니다. * 사람들이 무의식적으로 여러 요청을 보내지 못하도록 시도하는 것이 좋지만 악의적으로 그렇게하는 것을 막을 수는 없습니다. 서버는 이에 견고해야합니다. –
감사합니다. 이미이 문제를 처리 할 백엔드 메커니즘이 있음을 언급하지 않았습니다. 나는 그런 사건에서 서버가 불필요하게 포격당하는 것을 원하지 않았다. – Mohamad