Tôi gặp sự cố nhỏ với hàm jquery $ .ajax ().
Tôi có một biểu mẫu trong đó mỗi lần nhấp vào nút radio hoặc lựa chọn từ menu thả xuống sẽ tạo ra một biến phiên với giá trị đã chọn.
Bây giờ - tôi có một trong các menu thả xuống có 4 tùy chọn - tùy chọn đầu tiên (với nhãn Không có) có giá trị = "" người khác có id của họ.
Điều tôi muốn xảy ra là tùy chọn Không có (với giá trị trống) để xóa phiên và khác để tạo một phiên, nhưng chỉ khi phiên có tên lựa chọn cụ thể này chưa tồn tại - vì tất cả các tùy chọn khác đều có cùng số tiền được gán cho nó - nó chỉ cho biết cái nào đã được chọn.
Tôi không chắc điều đó có hợp lý không - nhưng hãy xem mã - có lẽ điều này sẽ làm cho nó rõ ràng hơn:
$("#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();
});
vì vậy - trước hết khi trình đơn #add_ons select kích hoạt "thay đổi", chúng tôi nhận được một số giá trị từ một vài phần tử để tính toán.
chúng tôi lấy thuộc tính nhãn của tùy chọn từ lựa chọn của chúng tôi để lưu trữ giá trị sẽ được thêm vào tổng số, tên của lựa chọn để tạo phiên với tên và giá trị này để sau này kiểm tra xem cái nào đã được chọn.
bây giờ - chúng tôi kiểm tra xem val == "" (sẽ cho biết rằng Không có tùy chọn nào đã được chọn) và chúng tôi trừ số tiền khỏi tổng số cũng như xóa phiên có tên của lựa chọn.
Sau đây là nơi vấn đề bắt đầu - câu lệnh else.
Khác - chúng tôi muốn kiểm tra xem hàm isSession () với tên của bộ chọn của chúng tôi trả về 0 hay 1 - nếu nó trả về 0 thì chúng tôi thêm vào tổng giá trị được lưu trữ trong thuộc tính nhãn, nhưng nếu nó trả về 1 - điều đó sẽ gợi ý phiên đó đã tồn tại - sau đó chúng tôi chỉ thay đổi giá trị của phiên này bằng cách tạo lại nó - nhưng số tiền không được thêm vào nó.
Bây giờ hàm isSession trông như thế này:
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');
}
});
}
Bây giờ - vấn đề là - tôi không biết liệu việc sử dụng "return" có trả về kết quả từ hàm hay không - vì nó dường như không hoạt động - tuy nhiên, nếu tôi đặt "data" trong phần thành công: cảnh báo - nó dường như trả về giá trị phù hợp.
Có ai biết cách trả về giá trị từ hàm và sau đó so sánh nó trong câu lệnh tiếp theo không?
Cảm ơn các bạn - Tôi đã thử theo cách sau:
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');
}
});
}
thì hàm updateResult ():
function updateResult (data) {result = data; }
kết quả - là biến toàn cục - sau đó tôi đang cố đọc:
$("#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();
});
nhưng vì lý do nào đó - nó không hoạt động - bất kỳ ý tưởng nào?