我们使用的预订引擎从 REDZY API 检索数据和促销代码,目前我们正在努力让百分比金额发挥作用。
这是我们当前的代码
...
var tour_id = $('input[name="tour_id"]').val();
$.ajax({
type: "POST",
data: { action: 'verify_promo_code', promocode: promocode, tour_id: tour_id },
url: orpheus_tours_local_var.ajaxurl,
success: function (response) {
if (response) {
var responseJson = JSON.parse(response);
console.log(responseJson);
var discountValue
if(responseJson.result.valueType == 'VALUE') {
discountValue = responseJson.result.value;
}
else if (responseJson.result.valueType == 'PERCENT_LIMITPRODUCT') {
discountValue = $('.grand-total').html().replace('$','');
}
else if (responseJson.result.valueType == 'VALUE_LIMITPRODUCT') {
discountValue = responseJson.result.value;
}
else if (responseJson.result.valueType == 'VALUE_LIMITCATALOG') {
discountValue = responseJson.result.value;
...
虽然我们对所有与固定值相关的项目(例如 VALUE_LIMITPRODUCT 和 VALUE_LIMITCATALOG 工作)都没有任何问题,但与 PERCENT_LIMITPRODUCT 相关的项目无法正常工作,并且明显错误(替换?)。理想的目标是应用百分比值并从总计中减去百分比值。
实现这一目标的最佳方法是什么?一些专家的见解将不胜感激,谢谢。
最佳答案
假设正百分比值意味着总值(value)减少,您可以使用如下所示的内容:
if (response) {
var rJson = JSON.parse(response).result,
ty=rJson.valueType,
va=rJson.value;
console.log(rJson);
var discountValue
if(ty == 'VALUE') {
discountValue = va;
}
else if (ty == 'PERCENT_LIMITPRODUCT') {
discountValue = $('.grand-total').text().replace('$','')*(-va/100.+1);
}
else if (ty == 'VALUE_LIMITPRODUCT' || ty == 'VALUE_LIMITCATALOG') {
discountValue = va;
...
我赞同@Tyler Sells 的评论。在不知道实际 HTML 的情况下,这只能是粗略的猜测。在我的代码中,va
上的 parseFloat()
转换是通过应用减号隐式完成的。当然,只有在首先有一个需要转换的合理值的情况下,这才有效。 总计
金额的转换是通过应用乘法来完成的。但如果内容“不可转换”,这也可能会失败。
回应:
result:
code: "SIERRATEST4"
internalNotes: ""
issueDate: "2019-10-02T17:00:00Z"
status: "ISSUED"
value: 10
valueType: "PERCENT_LIMITPRODUCT"
关于JSON 响应的 JavaScript 百分比计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58444422/