我在“ Ajax加载程序映像”中有问题。在Firefox上运行正常,但在chrome上,ajax加载程序映像似乎没有。
我在检查任何属性产品时会在边栏上有一些属性,产品会根据它进行更改,并且在ajax完成之前会生成一个预加载器图像。我正在做的是在我首先检查任何属性时在div html中插入gif图像并使用.show()方法,并且在ajax成功之后,我将div html设置为null并将其隐藏。
您可以在萤火虫(<div id="ajax_loader_div" style="display:none;"></div>)中看到该div
<div id="ajax_loader_div" style="display:none;"></div>
代码真的很复杂,所以我不在这里发布代码。对此非常抱歉。您可以在http://vcompare4u.com/wpcompare/products/laptops/上看到它
我需要帮助。请谢谢!!!
我看过你的密码
众所周知,同步请求将锁定UI。因此,在chrome和safari上就不足为奇了(有趣的是在Firefox中)
你可以尝试这样的事情吗
jQuery('#customtag_widget-2 .compare_attribute').bind('change', jQuery.filterProductsCompare2 = function () { $.ajaxSetup({async:false}); jQuery('#ajax_loader_div').css('display', 'block'); jQuery('#ajax_loader_div').html('<img src="http://vcompare4u.com/wpcompare/wp-content/themes/compare/_assets/img/ajax-loader.gif" / >'); jQuery('#customtag_widget-2 .compare_attribute_group').each(function () { jQuery(this).children().each(function () { if (jQuery(this).children('.compare_attribute').attr('checked')) { if (jQuery(this).children('.compare_attribute').attr('name').indexOf('b[') != -1) { brands.push(jQuery(this).children('.compare_attribute').attr('value')); } if (jQuery(this).children('.compare_attribute').attr('name').indexOf('c[') != -1) { categories.push(jQuery(this).children('.compare_attribute').attr('value')); } } }) } else { minmaxarr = jQuery(this).attr('value').split(';'); minPrice = minmaxarr[0]; maxPrice = minmaxarr[1]; } if (!jQuery.support.placeholder) { if (isEmptyPlaceholder == 1) { jQuery(this).val('Search...'); } } }) if (jQuery('#dont_change_price').is(':checked')) { minPrice = jQuery('#overall_min').val(); maxPrice = jQuery('#overall_max').val(); } else {} jQuery.ajax({ url : file_url, data : { ajaxsearch : '1', s : 'compare', ki : keywords_comparei, product : '', c : categories, b : brands, checked_id : checked_string, dont_change_price : dont_change_price, min : minPrice, max : maxPrice, product_category : product_category }, success : function (data) { // Do stuff here } }); jQuery.ajax({ url : bracket_file_url, data : { ajaxsearch : '1', s : 'compare', ki : keywords_comparei, product : '', c : categories, b : brands, checked_id : checked_string, min : minPrice, max : maxPrice, product_category : product_category }, success : function (bracket_data) { // DO stuff here } }); if (!jQuery('#dont_change_price').is(':checked')) { jQuery.ajax({ url : price_file_url, data : { ajaxsearch : '1', s : 'compare', ki : keywords_comparei, product : '', c : categories, b : brands, checked_id : checked_string, min : minPrice, max : maxPrice, product_category : product_category }, success : function (price_data) { // DO stuff here } }); } jQuery('#ajax_loader_div').hide(); jQuery('#ajax_loader_div').html(''); $.ajaxSetup({async:true}); });
我想做的是为每个ajax请求执行同步请求,而不是使用成功函数,我分别使用ajax请求。由于同步的性质,每个请求将一个接一个地处理。
在chrome控制台中检查您的代码,我已经看到Ajax加载器非常少的时间立即被隐藏起来。