Author: sascharodekamp
Date: Wed Oct 5 17:29:13 2011 New Revision: 1179340 URL: http://svn.apache.org/viewvc?rev=1179340&view=rev Log: UPDATE: Ajax callings in CheckoutProcess.js are not handling server-side errors correctly (https://issues.apache.org/jira/browse/OFBIZ-4342) A patch from Jonatan Soto: All methods that do ajax calls in CheckoutProcess.js are not dealing with the server-side errors. They should be treated in the success callback using an existing method called getServerError(data). This method looks for the _ERROR_MESSAGE* keys of the JSON object returned by the server. Modified: ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/images/checkoutProcess.js Modified: ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/images/checkoutProcess.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/images/checkoutProcess.js?rev=1179340&r1=1179339&r2=1179340&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/images/checkoutProcess.js (original) +++ ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/images/checkoutProcess.js Wed Oct 5 17:29:13 2011 @@ -24,17 +24,17 @@ var isBillStepValidate = false; jQuery(document).ready(function(){ // Cart var validateCart = jQuery("#cartForm"); - validateCart.validate(); - + validateCart.validate(); + var validateShip = jQuery("#shippingForm"); validateShip.validate(); - + var validateShipOption = jQuery("#shippingOptionForm"); validateShipOption.validate(); - + var validateBill = jQuery("#billingForm"); validateBill.validate(); - + // Goto Edit Cart Panel jQuery('#openCartPanel').click(function() { showEditCartPanel(); @@ -143,8 +143,8 @@ function getServerError(data) { var serverError = ""; if (data._ERROR_MESSAGE_LIST_ != undefined) { serverErrorHash = data._ERROR_MESSAGE_LIST_; - serverErrorHash.each(function(error) { - serverError += error.message; + jQuery.each(serverErrorHash, function(i, error) { + serverError += error.message + '<br/>'; }); } if (data._ERROR_MESSAGE_ != undefined) { @@ -257,24 +257,29 @@ function createUpdateCustomerAndShipping async: false, data: jQuery('#shippingForm').serialize(), success: function(json) { - jQuery('#shippingFormServerError').fadeOut('fast'); - // Process Shipping data response. - jQuery('#shipToPartyId').val(json.partyId); - jQuery('#billToPartyId').val(json.partyId); - jQuery('#shipToContactMechId').val(json.contactMechId); - jQuery('#shipToPhoneContactMechId').val(json.phoneContactMechId); - jQuery('#emailContactMechId').val(json.emailContactMechId); - //jQuery('#completedShippingMethod').html(json.shippingDescription); - updateShippingSummary(); - getShipOptions(); - result = true; + if (!getServerError(json)) { + jQuery('#shippingFormServerError').fadeOut('fast'); + // Process Shipping data response. + jQuery('#shipToPartyId').val(json.partyId); + jQuery('#billToPartyId').val(json.partyId); + jQuery('#shipToContactMechId').val(json.contactMechId); + jQuery('#shipToPhoneContactMechId').val(json.phoneContactMechId); + jQuery('#emailContactMechId').val(json.emailContactMechId); + //jQuery('#completedShippingMethod').html(json.shippingDescription); + updateShippingSummary(); + getShipOptions(); + result = true; + } else { + jQuery('#shippingFormServerError').html(serverError); + result = false; + } }, error: function(error) { if (error != "") { - jQuery('#shippingFormServerError').html(serverError); + jQuery('#shippingFormServerError').html(error); } result = false; - } + } }); return result; } @@ -289,19 +294,24 @@ function getShipOptions() { type: 'POST', async: false, success: function(json) { - jQuery('#shippingFormServerError').fadeOut('fast'); - isShipStepValidate = true; - shipOptions = json.shippingOptions; - var shipMethod = jQuery('#shipMethod'); - shipMethod.find("option").remove(); - jQuery.each(shipOptions, function(shipOption) { - if (this.productStoreShipMethId){ - shipMethod.append(jQuery("<option value = " + this.shippingMethod + ":" + this.productStoreShipMethId + " > " + this.shippingDesc + " </option>")); + if (!getServerError(json)) { + jQuery('#shippingFormServerError').fadeOut('fast'); + isShipStepValidate = true; + shipOptions = json.shippingOptions; + var shipMethod = jQuery('#shipMethod'); + shipMethod.find("option").remove(); + jQuery.each(shipOptions, function(shipOption) { + if (this.productStoreShipMethId){ + shipMethod.append(jQuery("<option value = " + this.shippingMethod + ":" + this.productStoreShipMethId + " > " + this.shippingDesc + " </option>")); + } else { + shipMethod.append(jQuery("<option value = " + this.shippingMethod + " > " + this.shippingDesc + " </option>")); + } + }); + result = true; } else { - shipMethod.append(jQuery("<option value = " + this.shippingMethod + " > " + this.shippingDesc + " </option>")); + jQuery('#shippingFormServerError').html(serverError); + result = false; } - }); - result = true; }, error: function(error) { if (error != "") { @@ -328,6 +338,7 @@ function setShippingOption() { async: false, data: jQuery('#shippingOptionForm').serialize(), success: function(json) { + if (!getServerError(json)) { shipTotal = json.shippingTotal; isShipOptionStepValidate = true; jQuery('#selectedShipmentOption').html(json.shippingDescription); @@ -336,6 +347,10 @@ function setShippingOption() { //jQuery('#cartGrandTotal').val(json.cartGrandTotal); //jQuery('#totalSalesTax').val(json.totalSalesTax); result = true; + } else { + jQuery('#shippingFormServerError').html(serverError); + result = false; + } }, error: function(error) { if(error != "") { @@ -374,13 +389,18 @@ function processBillingAndPayment() { data: jQuery('#billingForm').serialize(), async: false, success: function(json) { - jQuery('#billingFormServerError').fadeOut('fast'); - isBillStepValidate = true; - jQuery('#billToContactMechId').val(json.contactMechId); - jQuery('#paymentMethodId').val(json.paymentMethodId); - jQuery('#billToPhoneContactMechId').val(json.phoneContactMechId); - updateBillingSummary(); - result = true; + if (!getServerError(json)) { + jQuery('#billingFormServerError').fadeOut('fast'); + isBillStepValidate = true; + jQuery('#billToContactMechId').val(json.contactMechId); + jQuery('#paymentMethodId').val(json.paymentMethodId); + jQuery('#billToPhoneContactMechId').val(json.phoneContactMechId); + updateBillingSummary(); + result = true; + } else { + jQuery('#shippingFormServerError').html(serverError); + result = false; + } }, error: function(error) { if(error != "") { @@ -430,8 +450,13 @@ function addPromoCode() { type: 'POST', data: {"productPromoCodeId" : jQuery('#productPromoCode').val()}, success: function(json) { - jQuery('#cartFormServerError').fadeOut('fast'); - updateCartData(); + if (!getServerError(json)) { + jQuery('#cartFormServerError').fadeOut('fast'); + updateCartData(); + } else { + jQuery('#shippingFormServerError').html(serverError); + result = false; + } }, error: function(error) { if(error != "") { @@ -452,7 +477,11 @@ function getProductLineItemIndex(event, async: false, data: formValues, success: function(json) { - itemIndex = json.itemIndex; + if (!getServerError(json)) { + itemIndex = json.itemIndex; + } else { + jQuery('#shippingFormServerError').html(serverError); + } } }); return itemIndex; @@ -491,32 +520,37 @@ function updateCartData(elementId, formV type: 'POST', data: formValues, success: function(json) { - if (json.totalQuantity == 0) { - jQuery('#emptyCartCheckoutPanel').show(); - jQuery('#checkoutPanel').hide(); - jQuery('#microCartNotEmpty').hide(); - jQuery('#microCartEmpty').show(); - jQuery('#quickCheckoutEnabled').hide(); - jQuery('#quickCheckoutDisabled').show(); - jQuery('#onePageCheckoutEnabled').hide(); - jQuery('#onePageCheckoutDisabled').show(); - jQuery('#googleCheckoutEnabled').hide(); - jQuery('#googleCheckoutDisabled').show(); - jQuery('#microCartPayPalCheckout').hide(); - } else { - // Replace whole cart panel with updated cart values for updating line item in case of gift item is added or remove in cart after applying coupon code - // No need to calculate individual value for shopping cart when whole cart is updating - jQuery.ajax({ - url: 'UpdateCart', - type: 'POST', - cache: false, - success: function(data) { - jQuery('#cartPanel').html(data); - initCartProcessObservers(); + if (!getServerError(json)) { + if (json.totalQuantity == 0) { + jQuery('#emptyCartCheckoutPanel').show(); + jQuery('#checkoutPanel').hide(); + jQuery('#microCartNotEmpty').hide(); + jQuery('#microCartEmpty').show(); + jQuery('#quickCheckoutEnabled').hide(); + jQuery('#quickCheckoutDisabled').show(); + jQuery('#onePageCheckoutEnabled').hide(); + jQuery('#onePageCheckoutDisabled').show(); + jQuery('#googleCheckoutEnabled').hide(); + jQuery('#googleCheckoutDisabled').show(); + jQuery('#microCartPayPalCheckout').hide(); + } else { + // Replace whole cart panel with updated cart values for updating line item in case of gift item is added or remove in cart after applying coupon code + // No need to calculate individual value for shopping cart when whole cart is updating + jQuery.ajax({ + url: 'UpdateCart', + type: 'POST', + cache: false, + success: function(data) { + jQuery('#cartPanel').html(data); + initCartProcessObservers(); + } + }); } - }); + } else { + jQuery('#shippingFormServerError').html(serverError); + result = false; + } } - } }); } function processOrder() { |
Free forum by Nabble | Edit this page |