Скрипт передает post запрос для отправки e-mail заказа с данными о натяжном потолке и обрабатывает результат.
Вот примерно так (обрезал мало существенные детали) выглядит код:
$("#sale").click(function() {
var Form = {
name: 'contactForm',
cssClass: {'warning' : 'warning','error' : 'error', 'success' : 'success'},
id: {'error' : 'error', 'success': 'success'},
errorPrefix: 'Error',
action: function(){return $('#' + this.name).attr('action')},
data: function(){return $('#' + this.name).serialize();},
hideBox: function(el){$(el).slideUp('slow');},
showBox: function(el){$(el).slideDown('slow');}
}
// Boxes to hide
var cssBoxes = '.' + Form.cssClass['warning'] + ',.' + Form.cssClass['error'] + ',.' + Form.cssClass['success'];
// hide all boxes if some exists
$('#ajax_loader').ajaxStart(function(){$('#send').hide(); $(this).show() })
$('#ajax_loader').ajaxComplete(function(){$('#send').show(); $(this).hide() })
$('#' + Form.name).submit(function(){
Form.hideBox(cssBoxes);
// Ajax request
$.post(Form.action(), Form.data(), function(p_data){
var post_res = JSON.parse(p_data);
if(post_res === true){
Form.showBox('#' + Form.id['success']);
$('#contact_form form input[type="text"]').attr('value', '');
}else if(post_res === false){
Form.showBox('#' + Form.id['error']);
}else{
Form.showBox('#'+Form.errorPrefix);
for (var p_val in post_res){Form.showBox('#' + post_res[p_val] + Form.errorPrefix);}
}
});
return false;
});
});
В последнем цикле происходит зацикливание и не возникает .ajaxComplete
Если убрать этот цикл - все сработает, естественно, за исключением подсветки нужных div.
Если этот цикл в IE8 заканчивается, и дивы высвечивает, но не выполняется .ajaxComplete.
То в Chrome в этом цикле вообще происходит переполнение: после всех фактических данных массива, возникают какие-то не понятные отрезки кода, видные при отладке с помощью
alert(post_res[p_val]);
прямо в цикле. А потом вообще перегрузка ЦП до 100%!
Подскажите, в чем может быть дело? Где копать?
Могу опять для пробы вернуть отладочные сообщения.
Если это принципиально, все работает в UTF-8 и данные (в т.ч. содержание name и id свойств в полях ввода формы) содержат кириллицу.
Форма откроется при выборе в
калькуляторе расчета стоимости натяжного потолка нескольких последовательных шагов и нажатии на батон "Заказать".