반응형
2개의 버튼이 있는 폼에서 Ajax Request on button click을 전송하려면 어떻게 해야 하나요?
다음 두 개의 버튼이 있는 폼에서 한 페이지에서 다른 페이지로 요청을 보내고 싶습니다.
<form method="post">
<button id="button_1" value="val_1" name="but1">button 1</button>
<button id="button_2" value="val_2" name="but2">button 2</button>
<input id="access_token" type="hidden" name="access_token" value="<?php echo $_SESSION['access_token']; ?>" />
</form>
$(document).ready(function() {
$("#button_1").click(function(e) {
e.preventDefault();
$.ajax({
type: "POST",
url: "/pages/test/",
data: {
id: $("#button_1").val(),
access_token: $("#access_token").val()
},
success: function(result) {
alert('ok');
},
error: function(result) {
alert('error');
}
});
});
$("#button_2").click(function(e) {
e.preventDefault();
$.ajax({
type: "POST",
url: "/pages/test/",
data: {
id: $("#button_2").val(),
access_token: $("#access_token").val()
},
success: function(result) {
alert('ok');
},
error: function(result) {
alert('error');
}
});
});
});
어떻게 하면 이 코드를 개선하고 하나의 기능으로 통합할 수 있을까요?
핸들러의 논리적인 차이는 클릭된 버튼의 값뿐이므로this
키워드: 이벤트를 발생시킨 요소를 참조하여val()
그것으로부터.이것을 시험해 보세요.
$("button").click(function(e) {
e.preventDefault();
$.ajax({
type: "POST",
url: "/pages/test/",
data: {
id: $(this).val(), // < note use of 'this' here
access_token: $("#access_token").val()
},
success: function(result) {
alert('ok');
},
error: function(result) {
alert('error');
}
});
});
두 함수의 차이가 트리거되는 버튼 값뿐일 경우 jQuery multiple-selector를 사용합니다.
$("#button_1, #button_2").on("click", function(e) {
e.preventDefault();
$.ajax({type: "POST",
url: "/pages/test/",
data: { id: $(this).val(), access_token: $("#access_token").val() },
success:function(result) {
alert('ok');
},
error:function(result) {
alert('error');
}
});
});
function sendAjaxRequest(element,urlToSend) {
var clickedButton = element;
$.ajax({type: "POST",
url: urlToSend,
data: { id: clickedButton.val(), access_token: $("#access_token").val() },
success:function(result){
alert('ok');
},
error:function(result)
{
alert('error');
}
});
}
$(document).ready(function(){
$("#button_1").click(function(e){
e.preventDefault();
sendAjaxRequest($(this),'/pages/test/');
});
$("#button_2").click(function(e){
e.preventDefault();
sendAjaxRequest($(this),'/pages/test/');
});
});
- Ajax 요청을 전송하기 위한 별도의 함수로 생성됩니다.
- 향후 다른 URL로 데이터를 전송하고 싶기 때문에 두 번째 매개 변수를 URL로 유지합니다.
언급URL : https://stackoverflow.com/questions/35203019/how-can-i-send-an-ajax-request-on-button-click-from-a-form-with-2-buttons
반응형
'programing' 카테고리의 다른 글
워드프레스에서 Jsfiddle 또는 Github의 코드를 표시하는 방법은 무엇입니까? (0) | 2023.03.14 |
---|---|
Mongodb 쿼리 지정된 키를 가진 레코드를 선택하려면 (0) | 2023.03.14 |
자동 배선을 할 수 없습니다.'DataSource' 유형의 빈이 두 개 이상 있습니다. (0) | 2023.03.14 |
WordPress 개발을 위해 Visual Studio를 사용하는 방법 (0) | 2023.03.14 |
Script Manager를 가져올 수 없습니다.WebControl의 RegisterStartupScript가 UpdatePanel에 중첩되어 작동합니다. (0) | 2023.03.14 |