JQuery Запуск функции клика, которая включает пост-запрос Ajax - PullRequest
0 голосов
/ 13 октября 2019

У меня есть две кнопки на моей странице:

> Button A: btn_trendyolStocks
> Button B: btn_trendyolStocksSYNC

Button A обновляет акции по одному, когда вы задаете такие параметры, как: Product Name, Size, And Color

Теперь я пытаюсь сделать button B зацикливает вышеуказанную button A's функцию щелчка и массово обновляет акции.

Проблема заключается в том, что когда я нажимаю Button B, цикл for запускается немедленно без ожидания Button A's функция щелчка, поэтому она работает синхронно,Похоже, что все запросы AJAX выполняются одновременно. Я хочу, чтобы мой цикл Button B ожидал завершения запроса ajax (без установки async: false).

Здесь код:

  jQuery(".btn_trendyolStocksUpdate").click(function(e,product,color,size) {

    stockCount = jQuery(this).val();
    price = jQuery('#inp_trendyolPrice').val();

    if(typeof product !== 'undefined')
    {
      dataObj = {
        rowCount: rowCount,
        product: product,
        size:size,
        color:color,
        stockCount: stockCount,
      };
    }
    else
    {
      dataObj = {
        rowCount: rowCount,
        product: allProducts[jQuery( "#trendyolProduct" ).val()],
        size:jQuery( "#trendyolSize" ).val(),
        color:jQuery( "#trendyolColor" ).val(),
        stockCount: stockCount,
      };
    }

    if(jQuery('#inp_trendyolPrice').val()){
      dataObj["price"] = price;
    }

    jQuery.ajax({
           type: "POST",
           url: "/wp-content/plugins/promc/templates/updateStock.php",
           dataType: 'json',
           data: dataObj,
           success: function(data)
           {
             jQuery("#trendyolMonitor").append(data.Sql);
             jQuery("#trendyolMonitor").append("<br>");

             if(data.numberOfRows == 10000)
             {
                rowCount = rowCount + 10000;
                if(price > 0)
                {
                  jQuery('#btn_trendyolUpdatePrice').trigger('click');
                }
                else{
                  if(stockCount > 0){jQuery("#btn_trendyolStocksON").trigger('click');}
                  else if(typeof product !== 'undefined')
                  {
                    jQuery('#btn_trendyolStocksOFF').trigger('click',[product,size,color]);
                  }
                  else{
                    jQuery("#btn_trendyolStocksOFF").trigger('click');
                  }
                }
             }
             else
             {
               jQuery("#trendyolMonitor").append("<h3>Tamamlandı!</h3>");
               rowCount = 0;
             }
           },
           error: function(XMLHttpRequest, textStatus, errorThrown)
           {
             alert(XMLHttpRequest.responseText);
           }
      });
    });
  jQuery("#btn_trendyolStocksSYNC").click(function() {
    //Runs Through Some Arrays, and Gets All Out Of Stock Product Names, Colors, and Sizes.
    for(var product in all){
      var colors = all[product];
      for(var singleColor in colors[0]){
        var size = colors[0][singleColor];
        for(var index in size){
          var singleSize = size[index];
          //alert(allProducts[product] + " " + singleColor + " " + singleSize);
          jQuery('#btn_trendyolStocksOFF').trigger('click',[allProducts[product],singleColor,singleSize]);
        }
      }
    }
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...