@WebforSelf

Почему не закрывается форма после отправки?

<spoiler title="">
    (function($){
        'use strict';
        
        var name, id, img;
        
        $('.js-one-click').on('click', function(e){
            e.preventDefault();
            
            var $btn = $(this);
            
            name = $btn.data('name');
            id = $btn.data('id');
            img = $btn.data('img');
                
            $('#oneclick-product').text(name);
            $('#oneclick-image').css('background-image', 'url(' + img + ')');

          
 $.fancybox.open({
	src  : '#oneclick',
	type : 'inline'
});
		  
        });
        
        $('#oneclick').on('submit', function(e){
            e.preventDefault();
 
            $.ajax({
                type: "post",
                url: "ajax/oneclick.php",
                data: {
                    'amount': 1, 
                    'variant': id,
                    'name': $('#oneclick-name').val(),
                    'phone': $('#oneclick-phone').val() 
                },
                dataType: 'json',
                success: function(data){
                $.fancybox.close();
                }
            });
        });
        
    })(window.jQuery);
</spoiler>


Есть код, собственно что он делает, при нажатии на кнопку собирает дата аттрибуты и открывает модальное окно,
При кнопке отправить, отправляет данные и должен закрывать всплывающее окно ( в идеале конечно во всплывающем окне выводить текст что принята форма и потом через 2-3 сек выключаться) в принципе реализуемо на jquery но сейчас даже не закрывает при отправке. Где ошибся?
  • Вопрос задан
  • 173 просмотра
Решения вопроса 1
@yarnstart
Превозмогание и React
Для тех, кто сюда попал:

Вы говорите jquery, что сервер вам точно вернет json, а он возвращает вам пустую строку.
Выполните код
JSON.parse('');
Он даст ошибку, джейквери выполняет этот код за вас, чтобы вам не пришлось руками писатьJSON.parse(data) каждый раз, но т.к. данный скрипт падает ошибкой, срабатывает error callback

В коде, который вы видели на другом сайте с сервера может возвращаться настоящий json, либо там была другая версия jquery (потенциально возможно)

Если не уверены, что сервер вернет определенный формат данных либо вернет их вообще, просто не указывайте dataType.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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