jquery $ .ajax () 함수에 작은 문제가 있습니다.
라디오 버튼을 클릭하거나 드롭 다운 메뉴에서 선택할 때마다 선택한 값으로 세션 변수가 생성되는 양식이 있습니다.
이제 4 개의 옵션이있는 드롭 다운 메뉴 중 하나가 있습니다. 첫 번째 항목 (레이블 없음)에는 value = ""가 있고 다른 하나에는 ID가 있습니다.
내가 원하는 것은 없음 옵션 (빈 값 포함)을 사용하여 세션을 제거하고 다른 세션을 생성하는 것입니다. 그러나이 특정 선택 이름을 가진 세션이 아직 존재하지 않는 경우에만-다른 모든 옵션에 동일한 양이 할당되어 있습니다. -어떤 것이 선택되었는지 표시하는 것입니다.
그게 말이되는지 잘 모르겠지만 코드를 살펴보면 더 명확해질 것입니다.
$("#add_ons select").change(function() {
// get current price of the addons
var order_price_addon = $(".order_price_addon").text();
// get price of the clicked radio button from the rel attribute
var add = $(this).children('option').attr('label');
var name = $(this).attr('name');
var val = $(this).val();
if(val == "") {
var price = parseInt(order_price_addon) - parseInt(add);
removeSession(name);
} else {
if(isSession(name) == 0) {
var price = parseInt(order_price_addon) + parseInt(add);
}
setSession(name, val);
}
$(".order_price_addon").html(price);
setSession('order_price_addon', price);
updateTotal();
});
그래서-우선 #add_ons 선택 메뉴가 "변경"을 트리거 할 때 계산을 위해 몇 가지 요소에서 일부 값을 얻습니다.
합계에 추가 할 값을 저장하는 선택 항목에서 옵션의 레이블 속성을 가져오고,이 이름으로 세션을 생성하기위한 선택의 이름과 나중에 어느 항목이 선택되었는지 확인합니다.
이제-val == ""(없음 옵션이 선택되었음을 나타냄) 여부를 확인하고 총액에서 금액을 공제하고 선택한 이름으로 세션을 제거합니다.
이것이 문제가 시작되는 곳입니다-else 문.
그렇지 않으면-선택 자의 이름을 가진 isSession () 함수가 0 또는 1을 반환하는지 확인하고 싶습니다. 0을 반환하면 label 속성에 저장된 값을 합계에 추가하지만 1을 반환하면 제안합니다. 해당 세션이 이미 존재합니다. 그러면이 세션을 다시 생성하여이 세션의 값만 변경하지만 금액은 여기에 추가되지 않습니다.
이제 isSession 함수는 다음과 같습니다.
function isSession(selector) {
$.ajax({
type: "POST",
url: '/order.html',
data: ({ issession : 1, selector: selector }),
dataType: "html",
success: function(data) {
return data;
},
error: function() {
alert('Error occured');
}
});
}
이제 문제는- "return"을 사용하는 것이 함수의 결과를 반환하는지 여부를 모르겠다는 것입니다. 작동하지 않는 것 같습니다. 그러나 "data"를 success : 섹션에 넣으면 경고-올바른 값을 반환하는 것 같습니다.
누구든지 함수에서 값을 반환하고 다음 문에서 비교하는 방법을 알고 있습니까?
고마워요-다음과 같은 방법으로 시도했습니다.
function isSession(selector) {
$.ajax({
type: "POST",
url: '/order.html',
data: ({ issession : 1, selector: selector }),
dataType: "html",
success: function(data) {
updateResult(data);
},
error: function() {
alert('Error occured');
}
});
}
그런 다음 updateResult () 함수 :
function updateResult (data) {결과 = 데이터; }
결과-전역 변수입니다-내가 읽으려고합니다.
$("#add_ons select").change(function() {
// get current price of the addons
var order_price_addon = $(".order_price_addon").text();
// get price of the clicked radio button from the rel attribute
var add = $(this).children('option').attr('label');
var name = $(this).attr('name');
var val = $(this).val();
if(val == "") {
var price = parseInt(order_price_addon) - parseInt(add);
removeSession(name);
} else {
isSession(name);
if(result == 0) {
var price = parseInt(order_price_addon) + parseInt(add);
}
setSession(name, val);
}
$(".order_price_addon").html(price);
setSession('order_price_addon', price);
updateTotal();
});
하지만 어떤 이유로-작동하지 않습니다-어떤 생각?