@WebforSelf

После создания отдельной функции перестал работать ajax запрос?

Есть скрипт который аяксом считает доставку почтой РФ

$(document).ready(function(){
	$(".calculate_delivery_rp").click(function(e){
		e.preventDefault();
		var s_data=$(this).closest('form').serialize();
		$.ajax({
			type: 'POST',
			url: 'ajax/calculate_delivery_rp.php',
			data: s_data,
			success: function(result){
				if(result.found) {
					$('.rp_cost').html(result.success);
					$('.rp_cost').attr('data-cost', result.success);				
				}	
				else{
					$('.rp_cost').html('<span style="color:red">'+result.error+'</span>');
			}
			}
		});
	});
});


В данном виде при нажатии на кнопку все считает корректно и приходит результат.

Нужно было немного модифицировать сам код , добавился чекбокс, который имеет аттрибут 0(выкл) и 1(вкл) с помощью этого аттрибута я прибавляю доп стоимость.

Но при выделении чекбокса, также как и при нажатии на кнопку должен срабатывать скрипт, для этого вынес все в отдельную функцию, теперь функция ajax возвращает постоянно результат result.error

function showRaschet() {	
	    var pochta = $('#checkout-pochta').attr('data-pochta');
		var s_data=$(this).closest('form').serialize();
		$.ajax({
			type: 'POST',
			url: 'ajax/calculate_delivery_rp.php',
			data: s_data,
			success: function(result){
				if(result.found) { 
                if (pochta == 1) {				
					$('.rp_cost').html(parseInt(result.success)+100);
					$('.rp_cost').attr('data-cost', parseInt(result.success)+parseInt(100));
				}else{	
				$('.rp_cost').html(result.success);
				$('.rp_cost').attr('data-cost', result.success);
				}					
					/**/
        var id = $('#deliveries .first-label input.first').val();
        var price = $('#deliveries .payment-methods__item--active').find('.delivery-price').html();
        var separate = $('#deliveries .payment-methods__item--active').attr('data-separate');
        if (separate == 1) {
            $('#cart_delivery_cost').html(price + '<br>(оплачивается отдельно)');
        }else{
            $('#cart_delivery_cost').html(price);
        }
        var delivery_price_convert = $('#deliveries .payment-methods__item--active').find('.delivery-price').attr('data-cost');
        var products_price_convert = $('#cart_products_cost').attr('data-cost');
        var cart_total_price = parseInt(delivery_price_convert) + parseInt(products_price_convert);
        $('#cart_total_cost').html(cart_total_price);
/**/
				}	
				else{
					$('.rp_cost').html('<span style="color:red">'+result.error+'</span>');
			    }
			 }
		});
};


$('#checkout-pochta').click(function () {
    if ($(this).is(':checked')) {       
       $('#checkout-pochta').attr('data-pochta', 1);   
       showRaschet();	   
    } else {
       $('#checkout-pochta').attr('data-pochta', 0);
	   showRaschet();
    }
});


$(".calculate_delivery_rp").click(function(){
	showRaschet();
});


Где что поломал?
  • Вопрос задан
  • 77 просмотров
Решения вопроса 1
meowto16
@meowto16
Делаю штуки
Посмотри в Chrome Developer Tools вкладку Network, что передаешь там в ajax запросе. Посмотри ответ сервера, возможно у тебя просто банально данные с формы не подхватываются или вроде того.
Можешь обратить внимание на эту строку, возможно так как ты создал новую функцию - поменял контекст $(this)
var s_data=$(this).closest('form').serialize();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы