CMS Made Simple Forums
https://forum.cmsmadesimple.org/

jQuery Ajax and Chrome
https://forum.cmsmadesimple.org/viewtopic.php?f=4&t=72236
Page 1 of 1

Author:  psy [ Sun Jan 25, 2015 12:18 pm ]
Post subject:  jQuery Ajax and Chrome

It's a regular thing to have an ajax form submit items to a cart in the CGEcomm suite... until jQuery changed the rules about how best to submit the request and report on the subsequent results, especially when using Google Chrome.

jQuery now recommends using .done(), .fail() and .always() instead of, as in the past, :success, etc. OK, I can do that EXCEPT with Chrome.

For reasons of its own, even on a successful ajax submission, Chrome failed. Took a bit of research and hair-pulling to come up with the answer. Seems Chrome returns a 302 error response...

In this instance, the #prodlist contains a summary of items, each with its own add-to-cart form.

Here's what I did to compensate:

Code:
// ajax submit add to cart form and update view cart in header
$(document).on('click','#prodlist input:submit',function(e){
    e.preventDefault();
   
    var form = $(this).closest('form');
    var actionUrl = form.attr('action');

    var formData = form.serializeArray();
    formData.push({ name: this.name, value: true });

$.ajax({
type : "POST",
url : actionUrl,
data : formData,
cache : false
})   
   .fail (function(jqXHR) { if ( jqXHR.status !== 302 )
                                  alert("Item could not be added to the cart."); })
   .always(function() {$('.carty li:first').load("{/literal}{cms_selflink href='updated-cart'}&showtemplate=false{literal}");return false; })

});

Page 1 of 1 All times are UTC
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/