Почему не работает AJAX скрипт в firefox?

432
24 ноября 2016, 09:57

Добрый день! Подскажите, почему нможет не работать AJAX скрипт в firefox? Скрипт отвечает за отправку данных формы(добавление товара в корзину), в Опере и Хроме все нормально. А в firefox форма перенаправляет на ссылку в action из за чего я получаю 404 и товар в корзину не попадает.

$('.main-wrap').on('submit','form#add-product',function() {
event.preventDefault();
var a = null,
    e = null,
    t = $(this),
    n = t.find('button[type="submit"]'),
    r = t.find('input[name="variant"]:checked'),
    s = t.find('select[name="variant"]'),
    i = t.find('select[name="size"]'),
    u = t.find('input[name="size"]:checked'),
    l = t.find('input[name="amount"]');
console.log(a = r.val());
console.log(e = u.val());
console.log(l.val());
r.size() > 0 && (a = r.val()),
l.size() > 0 && (amount = l.val()),
s.size() > 0 && (a = s.val()),
u.size() > 0 && u.val() > 0 && (e = u.val()),
i.size() > 0 && (e = i.val()), 0 != e ? $.ajax({
    url: "ajax/cart.php",
    data: {
        variant: a,
        size: e,
        amount: amount
    },
    dataType: "json",
    success: function(a) {
        // $(".error-message").hasClass("size-error") && $(".error-message").removeClass("size-error"),
        console.log(a['c']);
        console.log(a['p']);
        $(".cart-btn").html(a['c']).addClass('cart--active');
        $('.popup__body').html(a['p']);
    }
}) : $(".error-message").addClass("size-error")

});

<form id="add-product" action="/cart">
      {if $product->sizes|count > '1'}
      <div class="product__size-list">
        {foreach $product->sizes as $v}
        <input id="size-n-{$v->size_id}" class="product__size-checkbox display--hidden" name="size" type="radio" value="{$v->size_id}">
        <label for="size-n-{$v->size_id}" class="product__size-item">
            {$v->scale}{if $v->growth}&nbsp;({$v->growth}){/if}
        </label>
        {/foreach}
      </div>
      {/if}
      <div style="display: none;">
        <input name="variant" value="{$product->variant->id}" type="radio" checked style="display: none;" />
      </div>
      <div class="product__quantity">
        <span class="btn-m btn-minus">
          <i class="fa fa-minus" aria-hidden="true"></i>
        </span>
        <input class="display--hidden" type="text" name="amount" value="1">
        <span class="quantity__count">1</span>
        <span class="btn-m btn-plus">
          <i class="fa fa-plus" aria-hidden="true"></i>
        </span>
      </div>
    </form>
Answer 1

В Firefox нет глобального объекта event. К счастью, обработчики событий jQuery получают его первым параметром во всех браузерах.

$('.main-wrap').on('submit','form#add-product',function(event) {
  event.preventDefault();
  ...
READ ALSO
в jquery метод hide не принимает параметры

в jquery метод hide не принимает параметры

Проблема наблюдается во всех браузерах. Метод hide работает, но не принимает параметр '3000', т.

382
плавный скролл jquery

плавный скролл jquery

Как сделать автоматический плавный скрол до определенного блока? Допустим зашел на страницу, и через 5 секунд проскролило до определенного...

448
Не могу передать массив из Ajax в контролер mvc.

Не могу передать массив из Ajax в контролер mvc.

Имеется следующий код в js. При передаче данных в контроллер не хочет получать значения.

516
Как дождаться выполнения функции?

Как дождаться выполнения функции?

После java асинхронность в js это беда для меня. Суть проблемы: написать функцию, которая проверяет наличие файла, если есть, то true, нет - false.

471